problema login con variabili

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Salve, ho un problema che non so come mai se inserisco un username sbagliato mi da undifined index all'if che verifica l'esistenza dell'username e la password.
ecco il codice:
PHP:
<?php 
session_start(); 
include_once("include.php"); 

if (isset($_POST["Login"])) {
    if(empty($_POST["username"]))
    {
    
        $error = "Non hai inserito l'username";
            
    }elseif(empty($_POST["password"]))
    {
        $error = "Non hai inserita la password";
    }else
    { 
	
		if ($USERS[$_POST["username"]]['pass'] == $_POST["password"]) {        // MI DA QUI IL NOTICE E MI SCRIVE CHE I DATI SONO SBAGLIATI MA MI FA VEDERE IL NOTICE SU $_POST["username"] == //
			$_SESSION["logged"] = true;
			$_SESSION["username"] = $_POST["username"];
			$_SESSION["immagine"] = $USERS[$_POST["username"]]['img'];

			$msg = "Aspetta il redirezzamento";
			redirect("home.php", 2);   
		} else {
			$error = 'Incorrect username/password. Please, try again.';
		}
}
}
?> 
 
<?php 
     if(isset($error)){ echo "<p style=\"color:red;background-color:black;\">".$error."</p>";} 
    if(isset($msg)){ echo $msg;} else { 
    ?> 
<form action="login.php" method="post">
   <table>
   <tr>
   <td>
   <input type="text" name="username" size="20" value="<?php if(isset($_POST["username"])){echo $_POST["username"];} ?>" />
   </td>
   <td>
   <input type="password" name="password" size="20">
   </td>
   <td>
   <input type="submit" id="login" value="Login" name="Login"/> 
   </td>
        </tr>
    </table>
</form>
    <?php 
    } 
?>
la passwords.php è cosi:
$USERS["thor"]['pass'] = "pippo";
$USERS["thor"]['img'] = "thor.jpg";
avete idee?

grazie mille.
 
ciao
metti dei vardump e guarda cosa ti danno
PHP:
<?php
//...
echo "<pre>";
var_dump($_POST["username"]);
var_dump($USERS[$_POST["username"]]['pass']);
echo "</pre>";
if ($USERS[$_POST["username"]]['pass'] == $_POST["password"]){
//...
?>
 
ok,
se scrivo male il nome e la password giusta mi salta fuori questo:
Notice: Undefined index: thors in D:\xampp\htdocs\webgame\login.php on line 17
e la linea è questa:
if ($USERS[$_POST["username"]]['pass'] == $_POST["password"]) {
idee?
PHP:
<?php 
session_start(); 
include_once("include.php"); 

if (isset($_POST["Login"])) {
    if(empty($_POST["username"]))
    {
    
        $error = "Non hai inserito l'username";
            
    }elseif(empty($_POST["password"]))
    {
        $error = "Non hai inserita la password";
    }else
    { 
	
		if ($USERS[$_POST["username"]]['pass'] == $_POST["password"]) {
			$_SESSION["logged"] = true;
			$_SESSION["username"] = $_POST["username"];
			$_SESSION["immagine"] = $USERS[$_POST["username"]]['img'];

			$msg = "Aspetta il redirezzamento";
			redirect("home.php", 2);   
		} else {
			$error = 'Incorrect username/password. Please, try again.';
		}
}
}
?> 
 
<?php 
     if(isset($error)){ echo "<p style=\"color:red;background-color:black;\">".$error."</p>";} 
    if(isset($msg)){ echo $msg;} else { 
    ?> 
<form action="login.php" method="post">
   <table>
   <tr>
   <td>
   <input type="text" name="username" size="20" value="<?php if(isset($_POST["username"])){echo $_POST["username"];} ?>" />
   </td>
   <td>
   <input type="password" name="password" size="20">
   </td>
   <td>
   <input type="submit" id="login" value="Login" name="Login"/> 
   </td>
        </tr>
    </table>
</form>
    <?php 
    } 
?>
grazie mille.
 
ciao
appunto per questo ti avevo detto di mettere i var dump, per capire quale variabile si perde quando scrivi errato.
non so da dove prendi le pass, comunque al posto dell'empety potreti mettere !isset || empety
 
ciao ho messo come mi hai detto tu:
echo "<pre>";
var_dump($_POST["username"]);
var_dump($USERS[$_POST["username"]]['pass']);
echo "</pre>";
if ($USERS[$_POST["username"]]['pass'] == $_POST["password"]) {

e la cosa è cosi:
Codice:
string(4) "dede"


Notice:  Undefined index: dede in D:\xampp\htdocs\webgame\login.php on line 18

NULL

Notice: Undefined index: dede in D:\xampp\htdocs\webgame\login.php on line 20

idee?
grazie mille.
 
ciao
la $USERS[$_POST["username"]]['pass'] risulta inesistente (NULL)
sei sicuro che esista l'array
$USERS['dede']['pass']
?
coumunque fai una prova così
PHP:
<?php
<?php 
session_start(); 
include_once("include.php"); 

if (isset($_POST["Login"])){
    if(empty($_POST["username"])){
        $error = "Non hai inserito l'username";
    }elseif(empty($_POST["password"])){
        $error = "Non hai inserita la password";
    }else{ 
    	if(isset($USERS[$_POST["username"]]['pass'])){
        	if ($USERS[$_POST["username"]]['pass'] == $_POST["password"]) {
            	$_SESSION["logged"] = true;
            $_SESSION["username"] = $_POST["username"];
            	$_SESSION["immagine"] = $USERS[$_POST["username"]]['img'];
            	$msg = "Aspetta il redirezzamento";
            	redirect("home.php", 2); 
        	}else{
            	$error = 'Incorrect username/password. Please, try again.';
        	}
		}else{
			$error = 'inesistenti username/password. Please, try again.';
		}
	}
}
?>
 

Discussioni simili