Page 1 sur 1

Problème d'apostrophe avec script en PHP

Publié : 06 févr. 2005, 21:23
par EmmaZL
Bonjour,

Sur mon site, j'ai un formulaire avec login et mot de passe en php. Si le mot de passe est faux, il y a un message d'erreur qui apparaît. C'est géré par ce code :

Code : Tout sélectionner

<?php

	$username = $_POST['username'];
	$password = $_POST['password'];

	// location of page to go to if username and password match
	$url = "user.php";

	$user_array = array("login");
	$pass_array = array("mot de passe");
	$user_length = count( $user_array );


	for ( $i = 0; $i < $user_length; $i++ )
	{
		if ( $username == $user_array[$i] && $password == $pass_array[$i] )
		{
			session_start();
			session_register("user");
			session_register("loggedIn");
			$_SESSION['user'] = $username;
			$_SESSION['loggedIn'] = "true";

			header("Location: $url");
		}
	}

	// nothing became valid while we looped so verification failed
	echo 'Erreur d'identification';

?>

Si mon message

Code : Tout sélectionner

echo 'Erreur d'identification';
contient un apostrophe, j'obtiens le message d'erreur suivant :

Code : Tout sélectionner

Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in /home/httpd/vhosts/molos.ch/httpdocs/login/verify.php on line 123
Je suis loin d'être une pro en PHP et je ne sais pas comment m'y prendre.

Ma question est donc, comment modifier le code pour qu'il accepte les apostrophes ?

Publié : 07 févr. 2005, 00:58
par Zexen
Il suffit de :
  • soit mettre un \ devant l'apostrophe
  • soit entourer la chaîne de guillemets doubles
En fait, l'apostrophe dans la chaîne était comprise comme fin de chaine par PHP, donc il comprenait pas le texte derrière puisqu'il attendait un point-virgule de fin d'instruction.

Publié : 07 févr. 2005, 08:38
par EmmaZL
Merci beaucoup ! :wink: Je teste tout ça ce soir !

Publié : 09 févr. 2005, 00:00
par olab
Tu as aussi la fonction addslashes("tout le texte") (utile si tu ne controle pas le contenu des parentheses, comme une variable par exemple)

Re: Problème d'apostrophe avec script en PHP

Publié : 09 févr. 2005, 19:47
par DJiK
EmmaZL a écrit :

Code : Tout sélectionner

			session_start();
			session_register("user");
			session_register("loggedIn");
			$_SESSION['user'] = $username;
			$_SESSION['loggedIn'] = "true";


Supprime les 2 lignes session_register(...) :!:

Doc de PHP: http://fr2.php.net/manual/fr/function.s ... gister.php
Attention Si vous utilisez $_SESSION, n'utilisez pas session_register()
:wink: