Probléme "Notice: Undefined variable" erreur

Fermé
Reivic - Modifié par Reivic le 26/09/2010 à 16:45
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 27 sept. 2010 à 22:15
Bonjour, Bonjour, Je suis entrain de développer un site mais j'ai une erreur dont je ne trouve pas la solution.
Sur ma page de connexion il y a écrit:
Notice: Undefined variable: userPass in C:\wamp\www\logindonation.php on line 34 

Notice: Undefined index: pass in C:\wamp\www\logindonation.php on line 34


Mon fichier php:
<?php include ('check.php');?> 
<?php 
//database connection 
    $MD5Code = "nForceIsGay";        //  md5 style 
    $sql_serveur = 'FAMILLECIVIER\SQLEXPRESS';        // MSSQL host IP 
    $sql_login = 'sa';            // Database utilisateur 
    $sql_password = '1234';        // Database mot de passe 
    $sql_base = "ACCOUNT_DBF";// Database account 
    $server_name = "Serveur";    // Défnis le nom du serveur 
    $reg_allow = 1;            // To turn on registering a write "1" 
    if(!extension_loaded("mssql")) { 
        echo "Impossible de se connecter a la base de donnée MSSQL"; 
        exit(); 
    } 
mssql_connect($sql_serveur,$sql_login,$sql_password) or die("Could not connect to the database. Please check your settings."); 
mssql_select_db($sql_base); 

?> 

<?php 

// variables du formulaire 
$action = isset($_POST['action']) ? $_POST['action'] : '';   
$login = isset($_POST['login']) ? $_POST['login'] : ''; 
$pass = isset($_POST['pass']) ? $_POST['pass'] : ''; 


// si le login et pass on été au préalable cryptés  
// (en md5 dans l'exemple) dans votre base 
// vous devez enlever les commentaires sur les 2 lignes suivante 

// $login  = md5($_POST['login']); 

$pass   = md5($MD5Code . $userPass.$_POST['pass']); 


// Si aucune action, le formulaire est afficher 
if ($action !=1 ) { 

echo '<center>Entrez votre login et mot de passe pour accéder a la page donation:<br /><br />'; 
echo '<form action="'.$_SERVER['REQUEST_URI'].'" method="post">'; 
echo '<input type="Hidden" name="action" value="1">'; 
echo 'Login: <input type="" name="login"><br />'; 
echo 'Mot de passe: <input type="password" name="pass"><br />'; 
echo '<input type="submit" value="Connexion">'; 
echo '</form></center>'; 
                  } 

// Sinon 
if ($action == 1) { 

$q = mssql_query("SELECT *  
                  FROM [ACCOUNT_TBL] 
                  WHERE account='$login'  
                  AND password='$pass'"); 
$n = mssql_num_rows($q); 

    if ($n == 1 AND $login != "" AND $pass != "") 
       { 
       // Le login est placé dans la session 
       $_SESSION['login_session'] = $login; 
       // redirection 

echo '<script language="Javascript"> 

document.location.replace("http://localhost/index.php?page=donate"); 

</script>'; 

        //header("location: http://localhost/index.php?page=donate");   
       } 

// Si le login ou le mot de passe sont incorrect 
// affiche de nouveau le formulaire 

         else{ 

echo '<center>S\'il vous plaît entrez votre login et mot de passe:<br /><br />'; 
echo '<form action="'.$_SERVER['REQUEST_URI'].'" method="post">'; 
echo '<input type="Hidden" name="action" value="1">'; 
echo 'Login: <input type="" name="login"><br />'; 
echo 'Password: <input type="password" name="pass"><br />'; 
echo '<input type="submit" value="Log In">'; 
echo '</form></center>'; 

die('<font color="red">Incorect Data'); 
           } 
         } 
?>



Merci d'avance.



4 réponses

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
27 sept. 2010 à 22:15
Salut.

$pass   = md5($MD5Code . $userPass.$_POST['pass']);
la clé 'pass' n'existe pas forcément dans $_POST.
Je te conseille de faire comme ceci :
<?php
if(isset($_POST['action']) && isset($_POST['login']) && isset($_POST['pass'])) {
    /*Si le formulaire est bien envoyé
} else {

}
?>


De plus, dans cette ligne :
$pass   = md5($MD5Code . $userPass.$_POST['pass']); 
La variable $userPass n'est pas définie avant.
Et $_POST['pass'] n'existe pas obligatoirement.
1
wildchildforlife Messages postés 74 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 23 juillet 2011 2
27 sept. 2010 à 03:29
Bonjour,

Il suffit que tu précède la ligne ou tu as utilisé la variable $userPass par :
if (!isset ($userPass))
{
$userPass = "" ;
}
Je crois que sa résoudrai le problème !
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
27 sept. 2010 à 10:44
Euh, ça ne résoudrait pas le problème !
Ça le masquerait, tout au plus...
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
27 sept. 2010 à 10:47
Bonjour,

Ligne 34, tu utilises $userPass à laquel aucune valeur n'a été affectée.
À mon avis, il y a une confusion entre cette ligne et la ligne un peu au-dessus :
$pass = isset($_POST['pass']) ? $_POST['pass'] : '';

Non ?

Xavier
0
J'ai essayer la technique de wildchildforlife sa m'affiche toujours la même erreur.

Xavier
Tu entend quoi par confusion sur ces 2 lignes?
0