par
Wounel » 28 oct. 2011, 18:28
Bonjour,
nouvel inscrit, et déjà un pépin
J'effectue quelques modifications dans le code d'osTicket (
http://osticket.com/). Et je tombe sur un morceau de code que je ne comprends pas du tout (mais qui fonctionne).
C'est la fonction qui effectue la connexion à la base de données. Un truc comme on en voit partout. Sauf que là, le développeur utilise une variable indirecte nommée $$dblink.
Or la variable $dblink (avec un seul $) n'est jamais initialisée. Ni dans cette fonction, ni dans ce fichier, ni ailleurs. Aucune autre occurrence de $dblink ou $$dblink.
Ce qui veut dire que $$dblink n'a pas vraiment de signification (dans mon esprit hein, puisqu'en vrai ça fonctionne).
Le code de la fonction:
Code : Tout sélectionner
function db_connect($dbhost,$dbuser, $dbpass,$dbname = "") {
if(!strlen($dbuser) || !strlen($dbpass) || !strlen($dbhost))
return NULL;
@$$dblink = mysql_connect($dbhost, $dbuser, $dbpass);
if($$dblink && $dbname)
@mysql_select_db($dbname);
//set desired encoding just in case mysql charset is not UTF-8 - Thanks to FreshMedia
if($$dblink) {
@mysql_query('SET NAMES "UTF8"');
@mysql_query('SET COLLATION_CONNECTION=utf8_general_ci');
}
return $$dblink;
}
A chaque passage dans cette fonction, PHP affiche un avertissement comme quoi $$dblink n'est pas définie.
Code : Tout sélectionner
Notice: Undefined variable: dblink in xxxxx/include/mysql.php on line 27
J'ai ajouté un @ devant chaque $$dblink comme le développeur l'avait déjà fait pour la première occurence, mais bon ce n'est pas terrible.
Ma question est: comment est-il possible que ce code fonctionne (puisque l'application fonctionne) alors que $dblink n'est pas initialisée, et donc que $$dblink ne veux rien dire ?
note: j'ai vérifié qu'il n'existe pas d'autre endroit où mysql_connect est utilisée.
Bonjour,
nouvel inscrit, et déjà un pépin :)
J'effectue quelques modifications dans le code d'osTicket ([url]http://osticket.com/[/url]). Et je tombe sur un morceau de code que je ne comprends pas du tout (mais qui fonctionne).
C'est la fonction qui effectue la connexion à la base de données. Un truc comme on en voit partout. Sauf que là, le développeur utilise une variable indirecte nommée $$dblink.
Or la variable $dblink (avec un seul $) n'est jamais initialisée. Ni dans cette fonction, ni dans ce fichier, ni ailleurs. Aucune autre occurrence de $dblink ou $$dblink.
Ce qui veut dire que $$dblink n'a pas vraiment de signification (dans mon esprit hein, puisqu'en vrai ça fonctionne).
Le code de la fonction:
[code] function db_connect($dbhost,$dbuser, $dbpass,$dbname = "") {
if(!strlen($dbuser) || !strlen($dbpass) || !strlen($dbhost))
return NULL;
@$$dblink = mysql_connect($dbhost, $dbuser, $dbpass);
if($$dblink && $dbname)
@mysql_select_db($dbname);
//set desired encoding just in case mysql charset is not UTF-8 - Thanks to FreshMedia
if($$dblink) {
@mysql_query('SET NAMES "UTF8"');
@mysql_query('SET COLLATION_CONNECTION=utf8_general_ci');
}
return $$dblink;
}[/code]
A chaque passage dans cette fonction, PHP affiche un avertissement comme quoi $$dblink n'est pas définie.
[code]Notice: Undefined variable: dblink in xxxxx/include/mysql.php on line 27[/code]
J'ai ajouté un @ devant chaque $$dblink comme le développeur l'avait déjà fait pour la première occurence, mais bon ce n'est pas terrible.
Ma question est: comment est-il possible que ce code fonctionne (puisque l'application fonctionne) alors que $dblink n'est pas initialisée, et donc que $$dblink ne veux rien dire ?
note: j'ai vérifié qu'il n'existe pas d'autre endroit où mysql_connect est utilisée.