Une erreur dans mon code php
Résolu
drogba7213
Messages postés
1524
Date d'inscription
Statut
Membre
Dernière intervention
-
drogba7213 Messages postés 1524 Date d'inscription Statut Membre Dernière intervention -
drogba7213 Messages postés 1524 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voici mon code j'ai un soucis j'ai beau essayer de le debugger je n'arrive pas à comprendre pourquoi $loginOK n'est pas true pouvez vous jeter un coup d'oueil svp
require('Connexion.php');
$loginOK = false;
if ((isset($_POST['login'])) && (isset($_POST['mdp'])) )
{
$password =$_POST['mdp'];
$login=$_POST['login'];
$sql = "SELECT LOGIN FROM PERSONNES WHERE LOGIN = '".addslashes($login)."' AND PASSWORD='".md5($password)."'";
$req = odbc_exec($conn,$sql) or die('Erreur SQL : <br />'.$sql);
if (odbc_num_rows($req) > 0)
{
$loginOK = true;
}
}
if ($loginOK)
{
//header("Location: ../Classement/choix.html\n\n");
echo "ca roule ma poule";
}
else
{
echo 'Une erreur est survenue, veuillez réessayer !';
}
odbc_close($conn);
merci d'avance
Voici mon code j'ai un soucis j'ai beau essayer de le debugger je n'arrive pas à comprendre pourquoi $loginOK n'est pas true pouvez vous jeter un coup d'oueil svp
require('Connexion.php');
$loginOK = false;
if ((isset($_POST['login'])) && (isset($_POST['mdp'])) )
{
$password =$_POST['mdp'];
$login=$_POST['login'];
$sql = "SELECT LOGIN FROM PERSONNES WHERE LOGIN = '".addslashes($login)."' AND PASSWORD='".md5($password)."'";
$req = odbc_exec($conn,$sql) or die('Erreur SQL : <br />'.$sql);
if (odbc_num_rows($req) > 0)
{
$loginOK = true;
}
}
if ($loginOK)
{
//header("Location: ../Classement/choix.html\n\n");
echo "ca roule ma poule";
}
else
{
echo 'Une erreur est survenue, veuillez réessayer !';
}
odbc_close($conn);
merci d'avance
A voir également:
- Une erreur dans mon code php
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
8 réponses
il faut que tu redéfinisse ta variable $loginOK or c'est une variable globale.
Quand tu utilise une variable dans une fonction en PHP, par défaut, elle est considérée comme locale et non globale.
Pour dire que tu redéfinis la variable globale dans une fonction PHP il faut que tu ajoutes
Quand tu utilise une variable dans une fonction en PHP, par défaut, elle est considérée comme locale et non globale.
Pour dire que tu redéfinis la variable globale dans une fonction PHP il faut que tu ajoutes
global $loginOK = true;
Salut,
Fait un echo $sql avant d'exécuter ta requête et regarde ce qui ne va pas.
Pour tester, tu l'exécutes directement dans ta BDD pour voir si tu as un message d'erreur et pour voir si un enregistrement correspond bien.
Fait un echo $sql avant d'exécuter ta requête et regarde ce qui ne va pas.
Pour tester, tu l'exécutes directement dans ta BDD pour voir si tu as un message d'erreur et pour voir si un enregistrement correspond bien.
excusez moi mais pourquoi il faut la défiir global?
oui d'accord mais $loginOK est local
et le reste est envoyé par la méthode post
donc je voit pas pourquoi mettre global
Enfin les variables global il me semble sont des trous de sécurité et c'est pour ca que les serveurs ont le le blobal définit sur off par défault dans les fichiers de config.
et le reste est envoyé par la méthode post
donc je voit pas pourquoi mettre global
Enfin les variables global il me semble sont des trous de sécurité et c'est pour ca que les serveurs ont le le blobal définit sur off par défault dans les fichiers de config.
je reprend ton code et le le commente.Je ne touche absolument rien
au passage les variables global il me semble sont des trous de sécurité -> absolument faux
les serveurs ont le le blobal définit sur off par défault -> absolument faux
P.S.: pense à instancer ton code
au passage les variables global il me semble sont des trous de sécurité -> absolument faux
les serveurs ont le le blobal définit sur off par défault -> absolument faux
P.S.: pense à instancer ton code
// tu utilises un fichier qui s'appelle connexion.php je suppose que c'est ta classe require('Connexion.php'); // tu déclares une variable globale $loginOK = false; //tu test si les login et mot de passe sont définit if ((isset($_POST['login'])) && (isset($_POST['mdp'])) ) { // si c'est définit tu les stock dans des variables locales $password =$_POST['mdp']; $login=$_POST['login']; // tu créé ta requête SQL $sql = "SELECT LOGIN FROM PERSONNES WHERE LOGIN = '".addslashes($login)."' AND PASSWORD='".md5($password)."'"; //tu exécutes ta requête SQL $req = odbc_exec($conn,$sql) or die('Erreur SQL : <br />'.$sql); // tu test si ta requête à au moins 1 ligne if (odbc_num_rows($req) > 0) { // tu met la variable locale à vrai // ton erreur est ici car la variable $loginOK est détruite $loginOK = true; } } // ta variable $loginOK n'existe plus à partir d'ici // tu test si un variable qui n'existe pas est à vrai // c'est impossible donc tu tombes directement dans le else if ($loginOK) { //header("Location: ../Classement/choix.html\n\n"); //tu affiches "ca roule ma poule" echo "ca roule ma poule"; } else { // tu affiches "Une erreur est survenue, veuillez réessayer !" echo 'Une erreur est survenue, veuillez réessayer !'; } // tu fermes ta connexion odbc_close($conn);
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Il ne faut pas la définir sur global.
As tu affiché ta requête et fonctionne-t-elle directement sur ton SGBD ?
As tu affiché ta requête et fonctionne-t-elle directement sur ton SGBD ?
C'est bizarre parce que maintenant que j'ai changé la fonction odbc ca fonctionne je comprend rien du tout
<?php
require('Connexion.php');
$loginOK = false;
if ((isset($_POST['login'])) && (isset($_POST['mdp'])) )
{
$password =$_POST['mdp'];
$login=$_POST['login'];
$sql = "SELECT LOGIN FROM PERSONNES WHERE LOGIN = '".addslashes($login)."' AND PASSWORD='".md5($password)."'";
$req = odbc_exec($conn,$sql) or die('Erreur SQL : <br />'.$sql);
if (odbc_fetch_row($req))
{
$loginOK = true;
}
}
if ($loginOK)
{
if ($login == 'Gestionnaire des arrêts chaînes')
{
header("Location: Utilisateur.php\n\n");
}
}
else
{
echo 'Une erreur est survenue, veuillez réessayer !';
}
odbc_close($conn);
?>
ok donc c'est pour ca que ca fonctionne jme disais aussi jcomprenais pas ce que tu voulais dire dante
par contre dites moi maintenant que je verifit si le login est bon alors il faut que je redirige ma page et la est le problème je fais
if ($login == 'Gestionnaire des arrêts chaînes')
{
header("Location: Utilisateur.php\n\n");
}
et ca ne fonctionne pas il me met :
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\www\Logiciel\Connexion.php:1) in C:\Program Files\Apache Group\Apache2\htdocs\www\Logiciel\Login.php on line 25
Savez vous pourquoi svp?
Dante si tu aurais quelque temps a m'accorder je voudrais me mettre à l'objet j'ai deux trois base mais j'arrive pas a démarrer mais bon faudrais mieux que l'on regle ce problème a part de celui ci et donc si c'est possible de parler sur msn ou autre
tien moi au courant
merci
<?php
require('Connexion.php');
$loginOK = false;
if ((isset($_POST['login'])) && (isset($_POST['mdp'])) )
{
$password =$_POST['mdp'];
$login=$_POST['login'];
$sql = "SELECT LOGIN FROM PERSONNES WHERE LOGIN = '".addslashes($login)."' AND PASSWORD='".md5($password)."'";
$req = odbc_exec($conn,$sql) or die('Erreur SQL : <br />'.$sql);
if (odbc_fetch_row($req))
{
$loginOK = true;
}
}
if ($loginOK)
{
if ($login == 'Gestionnaire des arrêts chaînes')
{
header("Location: Utilisateur.php\n\n");
}
}
else
{
echo 'Une erreur est survenue, veuillez réessayer !';
}
odbc_close($conn);
?>
ok donc c'est pour ca que ca fonctionne jme disais aussi jcomprenais pas ce que tu voulais dire dante
par contre dites moi maintenant que je verifit si le login est bon alors il faut que je redirige ma page et la est le problème je fais
if ($login == 'Gestionnaire des arrêts chaînes')
{
header("Location: Utilisateur.php\n\n");
}
et ca ne fonctionne pas il me met :
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\www\Logiciel\Connexion.php:1) in C:\Program Files\Apache Group\Apache2\htdocs\www\Logiciel\Login.php on line 25
Savez vous pourquoi svp?
Dante si tu aurais quelque temps a m'accorder je voudrais me mettre à l'objet j'ai deux trois base mais j'arrive pas a démarrer mais bon faudrais mieux que l'on regle ce problème a part de celui ci et donc si c'est possible de parler sur msn ou autre
tien moi au courant
merci