8768 sujets

Développement web côté serveur, CMS

Bonjour tout le monde,
voila mon site est assez ancien et j'avais à l'époque programmé en PHP 5.2.
Dans quelques mois je vais être obligé de basculer en PHP 5.4 et donc certaine fonction de php sont complètement obsolète comme par exemple l'utilisation de register_globals

Par contre je souhaiterai savoir si l'utilisation de $GLOBALS, elle, fonctionne toujours ?
Sur le manuel PHP je ne vois rien qui indique OBSOLETE, mais j'ai un gros doute.

Est ce que quelqu'un peut me confirmer ?

Merci d'avance.
Modifié par lupyo (22 Mar 2015 - 10:35)
Bonjour,

Il faut modifier ton code car register_globals n'est plus activé en php 5.4

Il faut déclarer tes variables.

$Sarko = $_POST['Sarko'];

Bonne continuation.

Dom
Bonjour,

je sais cela oui merci, c'est ce qui est prévu.

Cela ne répond pas à la question.
J'aimerai tout de même savoir si $GLOBALS fonctionne encore en php 5.4 car j'en ai besoin dans un cas très particulier
Regarde ton interface, tu es sur un mutualisé, un vps un dédié ?

Sur mon vps, je peux le passer en mode on, je suis en 5.4
Modifié par CVS (22 Mar 2015 - 20:08)
Merci QuentinC.
Oui je sais.
J'ai bien l'intention de me servir de $_GET, de $_POST et de $_SESSION etc... la n'est pas le débat.

Mais je suis dans le cadre d'une grosse migration et non d'un développement à partir de zéro et donc les choses ne sont pas aussi simple.

Par exemple j'ai une page function.php qui regroupent un très très grand nombre de fonction et mon site comporte des milliers de pages php qui font appel à ces fonctions.

La plupart de ces anciennes fonction ont des requettes SQL à l'époque faite avec mysql_
Or a cette époque l'on pouvait procéder ainsi :

$res = mysql_query($requete)

Or avec mysqli_ désormais il faut inclure la variable de connexion $sql ($sql = mysqli_connect("example.com", "user", "password", "database");)
Ce qui donne du coup :
$res = mysqli_query($sql,$requete)


or dans toutes mes fonctions sont faire comme ceci :

fonction test($var)
{
$req="SELECT exemple FROM machin WHERE id='$var'";
$result=mysql_query($req);
$exemple=mysql_result($result,0,"exemple");
}


Et je devrais donc les revoir toutes ainsi :
fonction test([b]$sql[/b],$var)
{
$req="SELECT exemple FROM machin WHERE id='$var'";
$result=mysqli_query([b]$sql[/b],$req);
etc etc ..
}

Sans oublier qui'il faudra modifier les milliers de pages php qui appellent la fonction
test('toto')
par
 test($sql, 'toto')

Ce qui implique un travail de dingue !

Alors qu'il serait peut-être plus performant de modifier directement la page function.php en ajoutant une variable $GLOBALS pour $sql ce qui ne me ferait modifier que les fonctions et pas les autre pages.

exemple :

$GLOBALS['sql'] = mysqli_connect("example.com", "user", "password", "database");

fonction test($var)
{
$req="SELECT exemple FROM machin WHERE id='$var'";
$result=mysqli_query($GLOBALS['sql'],$req);
etc etc...
}



Ou sinon on ne veut pas de GLOBALS j'ai penser mettre directement un require sur une page de connexion dans chaque fonction mais j'ai peur que sa fasse lourd.


fonction test($var)
{
//require sur un fichier qui connecte à sql 
require('sql_connect.php');
$req="SELECT exemple FROM machin WHERE id='$var'";
$result=mysqli_query($sql,$req);
etc etc...
}



bref j'espère que vous voyez ce que je veux dire.
Tu n'es pas obligé d'utiliser $GLOBALS. Le mot-clé global suffit. Ca reste une variable globale donc certains n'apprécieront quand même pas, mais c'est quand même styllistiquement plus joli.
QuentinC a écrit :
Tu n'es pas obligé d'utiliser $GLOBALS. Le mot-clé global suffit. Ca reste une variable globale donc certains n'apprécieront quand même pas, mais c'est quand même styllistiquement plus joli.


J'ai du mal à comprendre ce que tu entends par "mot-clé" global. Est ce que tu peux me donner un exemple ? Car justement je crois que ce genre de chose :
global $toto;

ne fonctionne plus.

Tandis que :
 $GLOBALS['toto']

fonctionne.

EDIT : autant pour moi, sa fonctionne également avec global $toto;
Modifié par lupyo (23 Mar 2015 - 19:13)