Une erreur dans mon code php
Résolu/Fermé
drogba7213
Messages postés
1524
Date d'inscription
mardi 14 août 2007
Statut
Membre
Dernière intervention
3 avril 2010
-
27 janv. 2009 à 10:01
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 - 27 janv. 2009 à 11:28
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 - 27 janv. 2009 à 11:28
A voir également:
- Une erreur dans mon code php
- Erreur 0x80070643 - Accueil - Windows
- Code puk bloqué - Guide
- Le code ascii - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Code telephone oublié - Guide
8 réponses
Utilisateur anonyme
27 janv. 2009 à 10:06
27 janv. 2009 à 10:06
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;
Mikey_UFC
Messages postés
312
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
2 août 2010
1
27 janv. 2009 à 10:09
27 janv. 2009 à 10:09
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.
drogba7213
Messages postés
1524
Date d'inscription
mardi 14 août 2007
Statut
Membre
Dernière intervention
3 avril 2010
21
27 janv. 2009 à 10:10
27 janv. 2009 à 10:10
excusez moi mais pourquoi il faut la défiir global?
drogba7213
Messages postés
1524
Date d'inscription
mardi 14 août 2007
Statut
Membre
Dernière intervention
3 avril 2010
21
27 janv. 2009 à 10:38
27 janv. 2009 à 10:38
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);
Mikey_UFC
Messages postés
312
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
2 août 2010
1
>
Utilisateur anonyme
27 janv. 2009 à 10:56
27 janv. 2009 à 10:56
faux la variable n'est pas détruite, il est toujours sur la même page donc il utilise toujours la variable locale définit plus haut.
il faut toujours éviter d'utiliser des variables globales.
il faut toujours éviter d'utiliser des variables globales.
Utilisateur anonyme
>
Mikey_UFC
Messages postés
312
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
2 août 2010
27 janv. 2009 à 10:58
27 janv. 2009 à 10:58
il faut toujours éviter d'utiliser des variables globales.
quand tu programmes en objet c'est inévitable.
quand tu programmes en objet c'est inévitable.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mikey_UFC
Messages postés
312
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
2 août 2010
1
27 janv. 2009 à 10:53
27 janv. 2009 à 10:53
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 ?
drogba7213
Messages postés
1524
Date d'inscription
mardi 14 août 2007
Statut
Membre
Dernière intervention
3 avril 2010
21
27 janv. 2009 à 10:55
27 janv. 2009 à 10:55
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
Mikey_UFC
Messages postés
312
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
2 août 2010
1
27 janv. 2009 à 11:15
27 janv. 2009 à 11:15
drogba7213
Messages postés
1524
Date d'inscription
mardi 14 août 2007
Statut
Membre
Dernière intervention
3 avril 2010
21
27 janv. 2009 à 11:24
27 janv. 2009 à 11:24
ah mdr j'ai trouvé j'avais fait deux espaces avant la balise php ahah
par contre la page vers laquelle je redirige la page n'applique pas mon css est ce normal?
par contre la page vers laquelle je redirige la page n'applique pas mon css est ce normal?
drogba7213
Messages postés
1524
Date d'inscription
mardi 14 août 2007
Statut
Membre
Dernière intervention
3 avril 2010
21
27 janv. 2009 à 11:28
27 janv. 2009 à 11:28
oui lol