Serveur Linux

Eléphant du PHP | 103 Messages

26 oct. 2011, 15:50

Par contre je reviens sur un autre problème auquel j'ai demandé conseil dans ce topic. C'est concernant mysql_real_escape_string. J'avais demandé au service informatique que l'on m'installe des librairies pour l'exportation de données Excel et depuis mysql_real_escape_string ne marche plus.

Concernant ce que tu avais dit moogli :
et que donne un var_dump($log); ?
en local ça m'affiche string 'le log' puis sa taille donc pas de problème.
sur serveur ça m'affiche bool(false)...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 oct. 2011, 16:01

Valeurs de retour

Retourne la chaîne échappée, ou FALSE si une erreur survient.
donc heu y a une boulette la !

je te conseil de comparer les phpinfo histoire de voir si ce sont les mêmes versions de php et si les mêmes extensions sont installer.

essai de mettre l'error_reporting à E_ALL | E_STRICT (si php <5 sans le | E_STRICT !)

si retourne false doit y avoir une raison et p'tet une erreur !

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 103 Messages

26 oct. 2011, 16:07

Je viens de constater encore autre chose...
J'ai essayé de mettre mysql_escape_string et là ça marche. Mais après avoir regardé brièvement sur le net, à ce que j'ai compris mysql_escape_string est dépassé et a été remplacé par mysql_real_escape_string...

Et pourtant la version serveur de php est 5.3.8 et la version locale est 5.3.5. je comprends vraiment pas :cry:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 oct. 2011, 16:15

heu voui, j'ai même pas fait gaffe :/ tu remarquera que j'ai mysql_real_escape_string :/ j'suis pas doué on pouvais se comprendre :d

mysql_escape_string n'a pas besoin de connexion au sgbd pour fonctionner donc c'est 'normal';

tu veux nous indiquer ton code complet histoire d'avoir une vue globale de la chose ? :d

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 103 Messages

26 oct. 2011, 16:30

require("connect.php");
try
	{
			if (!empty($_POST['log']) && !empty($_POST['mdp'])) 
			{
				$log=mysql_real_escape_string($_POST['log']);
				var_dump($log);
				$mdp=md5($_POST['mdp']);
				
				$rep = $bdd->query("SELECT id, grade FROM user WHERE log='$log'");
				while($don = $rep->fetch())
				{
					$idlog = $don['id'];
					$grade = $don['grade'];
				}
				
				$req = $bdd->query("SELECT id FROM user WHERE mdp='$mdp'");
				while($te = $req->fetch())
				{
					$idmdp = $te['id'];
				}
				
					if(empty($idlog))
					{
						echo "<script>alert(\"".$log." non reconnu! Pour avoir acces a cette application veuillez vous créer un compte\")</script>";						
						include("index.php");
						exit;
					}
					elseif(empty($idmdp))
					{
						echo "<script>alert(\"".$log." votre mot de passe est incorrect!\")</script>";						
						include("index.php");
						exit;
					}
					elseif(!empty($idlog) && !empty($idmdp)) // si le log et le mdp sont les mêmes que ceux de la base
					{
						
						session_start();
						$_SESSION['log']=$log;
						$_SESSION['grade']=$grade;
						//header("Location: php/accueil.php");
					}
				
			}
			else
			{
				echo "<script>alert(\"Vous devez remplir les deux champs!\")</script>";
				include("index.php");
				exit;
			}
	}
	catch(Exception $e)
	{
		// En cas d'erreur précédemment, on affiche un message et on arrête tout
		die('Erreur : '.$e->getMessage());
	}
Voilà le code de ma page de vérif qui donc fonctionne en local mais pas sur serveur...

J'ai fais la comparaison des phpinfo :

Apparaît sur le serveur mais pas en local : bz2, curl, exif, fileinfo, gettext, gmp, openssl, pdo_pgsql, pgsql, radius, shmop, sockets, sqlite3, xmlrpc, xsl
Apparaît en local mais pas sur serveur : com_dotnet, mysqlnd, odbc

Voilà les différences de librairies.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 oct. 2011, 17:35

par hasard tu n'utiliserais pas l'extension PDO pour faire tes requêtes ?

si oui, le problème est réglé, car tu n'a pas de connexion à mysql avec l'extention mysql mais avec PDO, ce qui n'est pas pareil.

c'est d'ailleur clairement indiqué dans la doc de mysql_real_escape_string
Liste de paramètres

unescaped_string

La chaîne à échapper.
link_identifier

La connexion MySQL. S'il n'est pas spécifié, la dernière connexion ouverte avec la fonction mysql_connect() sera utilisée. Si une telle connexion n'est pas trouvée, la fonction tentera d'ouvrir une connexion, comme si la fonction mysql_connect() avait été appelée sans argument. Si aucune connexion n'est trouvée ou établie, une alerte E_WARNING est générée.
dans le même esprit essai de te connecter en même temps avec l'extension mysql et mysqli.

pour "protéger" tes données utilise la méthode quote

j'suis sur que l'on peux répondre à me 1ère remarque sur ce sujet :mrgreen:


oui oui je sors très très vite :)

@+
Il en faut peu pour être heureux ......