Problema con login e password

dovresti scrivere cosi per valorizzare una variabile
PHP:
$username = $_POST['username'];

prova e ripossta il codice completo
 
Ciao

In quale parte del codice lo dovrei inserire ??? per essere sicuri di non sbagliare.

Ecco il codice completo del login.php:

PHP:
<?php

require_once("connetti.php");

if (!isset($_POST['log'])) {
   
        
    ?>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Loggati</title>

        <center>   <H1>AREA RISERVATA: PREGO EFFETTUARE IL LOGIN </H1>

            <form action= '' method="POST">

                <font face="Comic Sans MS">

                
Username: <input type="text" name="username"  maxlength="30" size ="32"> <br> <br>
Password: <input type="password" name="password"  maxlength="12" size ="14"> <br> <br>
                
 </font> 
 
 
                <center>
                    <input type="submit" name="log" value="Loggati" />
                    <input type="submit" name="uscita" value="Uscita" />
                </center> </form>
        </head>
        </body>
<?php
session_start();
$query = "SELECT id,username FROM utenti WHERE username='" . $_POST['username'] . "' AND password='" . $_POST['password'] . "'";  

$username = $_POST['username'];

$cerco = mysql_query($query);
    if(!$cerco) {
        echo "Errore query: <br/>$query<br/>" . mysql_error();
    mysql_error();
    }else{
        echo $query;

}
    }  

?>
 
Ultima modifica:
Sistemi una parte e ne rovini un altra :D

l'else dove te lo sei perso?

modifica cosi

PHP:
<?php
require_once("connetti.php");

if (!isset($_POST['log'])) {
    ?>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Loggati</title>

        <center>   <H1>AREA RISERVATA: PREGO EFFETTUARE IL LOGIN </H1>

            <form action= '' method="POST">
                <font face="Comic Sans MS">
                Username: <input type="text" name="username"  maxlength="30" size ="32"> <br> <br>
                Password: <input type="password" name="password"  maxlength="12" size ="14"> <br> <br>
                </font> 
                <center>
                    <input type="submit" name="log" value="Loggati" />
                    <input type="submit" name="uscita" value="Uscita" />
                </center> </form>
        </head>
    </body>
    <?php
} else {
    session_start();
    $query = "SELECT id,username FROM utenti WHERE username='" . $_POST['username'] . "' AND password='" . $_POST['password'] . "'";
    $cerco = mysql_query($query);
    if (!$cerco) {
        echo "Errore query: <br/>$query<br/>" . mysql_error();
        mysql_error();
    } else {
        echo $query;
    }

    if (mysql_num_rows($cerco) == 1) {
        echo "Utente trovato";
    } else {
        echo "Utente non trovato";
    }
}
?>
 
Ciao

Oni spesso faccio dei casini assurdi e mi perdo poi gli appunti... So disordinato come non so chi.... Ora sembra che vada, ma la query mi da il seguente risultato:


SELECT id,username FROM utenti WHERE username='paperinik4' AND password='xxx'Utente non trovato
 
Ultima modifica:
ora rimetti l'md5 senza fare altre modifiche

PHP:
$query = "SELECT id,username FROM utenti WHERE username='" . $_POST['username'] . "' AND password='" . md5($_POST['password']) . "'";
 
Ciao

Ora sembra chemi abbia trovato. Mi da questo risultato:

SELECT id,username FROM utenti WHERE username='paperinik4' AND password='0c88028bf3aa6a6a143ed846f2be1ea4'Utente trovato
 
Bene ora aggiungi i dati in sessione
PHP:
 if (mysql_num_rows($cerco) == 1) {
        echo "Utente trovato";
        $row = mysql_fetch_assoc($cerco);        
        $_SESSION['username'] = $row['username'];
        $_SESSION['id'] = $row['id'];
    } else {
        echo "Utente non trovato";
    }

e metti anche il redirect al posto dell' echo
 
Ciao

Già fatto e funziona,

Ma cosa diavolo era successo ??? perchè è andato in palla il sistema ???? ora mi riconosce e mi fa entrare. Mi da il seguente risultato, perchè avevo messo un var_dump. Ti posto il risultato:



array(0) { } Ciao

Vorrei solo capire cosa intende per arry e perchè non mi visualizza il nome. Solo ciao. La paginaris.php è strutturata in questa maniera:

PHP:
<?php

require_once("connetti.php");

session_start();

var_dump($_SESSION);

if ($_SESSION['username'] == 0) {
    
     mysql_error();
    echo "Ciao " . $_SESSION['username'];
} else {
    echo "Accesso non consentito";
} 

?>

Forse qua c'è da modificare qualcosina presumo.
 
cosa intende per array
è il var_dump della sessione che ti dice che non c'è settata nessuna sessione

Sicuro di non aver tolto session_start() dalla pagina del login?
 
Ciao

Ricontrollo, ma mi sembra che ci sia. Eccolo qua te lo posto il codice finale:

login.php:

PHP:
<?php
} else {
    session_start();
    $query = "SELECT id,username FROM utenti WHERE username='" . $_POST['username'] . "' AND password='" . md5($_POST['password']) . "'"; 

    

    $cerco = mysql_query($query);
    if (!$cerco) {
        echo "Errore query: <br/>$query<br/>" . mysql_error();
        mysql_error();
    } else {
     
    if (mysql_num_rows($cerco) == 1) {
   
        header("Refresh: 2;URL=paginaris.php");     
      
        echo "Utente trovato";
    } else {
        
        header("Refresh: 2;URL=login.php");    
        echo "Utente non trovato";
    }
}
}
?>

Un'altra cosa, nella paginaris.php, io ho messo così:

PHP:
<?php

require_once("connetti.php");

session_start();



if ($_SESSION['username'] == 0) {  <------> Questa è la riga dell'if
    
     
    echo "Ciao " . $_SESSION['username'];
} else {
    
   
    echo "Accesso non consentito";
} 

?>

Se tolgo if ($_SESSION['username']) {, non mi fa entrare, mi dice accesso negato :( Ma non utente non trovato.
 
if (mysql_num_rows($cerco) == 1) {

header("Refresh: 2;URL=paginaris.php");

echo "Utente trovato";
}

non vedo questo:
PHP:
 $row = mysql_fetch_assoc($cerco);        
 $_SESSION['username'] = $row['username'];
 $_SESSION['id'] = $row['id'];
 
PHP:
<?php
} else {
    session_start();
    $query = "SELECT id,username FROM utenti WHERE username='" . $_POST['username'] . "' AND password='" . md5($_POST['password']) . "'";     

    $cerco = mysql_query($query);
    if (!$cerco) {
        echo "Errore query: <br/>$query<br/>" . mysql_error();
        mysql_error();
    } else {
     
    if (mysql_num_rows($cerco) == 1) {
        $row = mysql_fetch_assoc($cerco);        
        $_SESSION['username'] = $row['username'];
        $_SESSION['id'] = $row['id'];  
        header("Refresh: 2;URL=paginaris.php");   
    } else {
        
        header("Refresh: 2;URL=login.php");    
        echo "Utente non trovato";
    }
}
}
?>
per i livelli devi aggiungere una condizioni in piu nella query
ma pensaci dopo
 
Ciao

Ciao,

Scusa se non ti ho risposto subito, ma sono andato a mangiare e poi a riposare. Ho provato il codice che mi hai postato, ora non mi fa più entrare. Te lo riposto:

PHP:
require_once("connetti.php");

if (!isset($_POST['log'])) {
    ?>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Loggati</title>

        <center>   <H1>AREA RISERVATA: PREGO EFFETTUARE IL LOGIN </H1>

            <form action= '' method="POST">
                <font face="Comic Sans MS">
                Username: <input type="text" name="username"  maxlength="30" size ="32"> <br> <br>
                Password: <input type="password" name="password"  maxlength="12" size ="14"> <br> <br>
                </font> 
                <center>
                    <input type="submit" name="log" value="Loggati" />
                    <input type="submit" name="uscita" value="Uscita" />
                </center> </form>
        </head>
    </body>
    <?php
} else {

    session_start();
    $query = "SELECT id,username FROM utenti WHERE username='" . $_POST['username'] . "' AND password='" . md5($_POST['password']) . "'";     

    $cerco = mysql_query($query);
    if (!$cerco) {
        echo "Errore query: <br/>$query<br/>" . mysql_error();
        mysql_error();
    } else {
     
    if (mysql_num_rows($cerco) == 1) {
        $row = mysql_fetch_assoc($cerco);        
        $_SESSION['username'] = $row['username'];
        $_SESSION['id'] = $row['id'];  
        header("Refresh: 2;URL=paginaris.php");   
    } else {
        
        header("Refresh: 2;URL=login.php");    
        echo "Utente non trovato";
    }
}
}
?>

Mi da questo errore:


Accesso non consentito che si trova nella paginaris
 
Ciao

Ciao,

Allora sembra funzionare tutto alla perfezione. L'unica cosa è che mi visualizza "ciao paperini4" (quindi username), anzicchè il nome. Presumo che ci siano altre modifiche da fare. Ma tu mi sai spiegare per il vecchio codice non ha funzionato qua ???
 
Ma tu mi sai spiegare per il vecchio codice non ha funzionato qua ???
??
L'unica cosa è che mi visualizza "ciao paperini4" (quindi username), anzicchè il nome.

- nella query devi aggiungere il nome
Codice:
SELECT id,username,nome
- devi poi estrarlo dalla query e metterlo in sessione
$nome = $row['nome'];
$_SESSION['nome'] = $nome;
 
Ciao

Ciao,

Grazie, ora ci provo, e poi sono di courvè in cucina. Avevo intuito qualcosa del genere a dire il vero. Ma sulla query devo mettere un altro and ???? Allora, mi da i triangolini gialli (battezzati cartellino giallo). Ti posto quello che ho fatto:


Questo è login.php, qua ti indico il cartellino giallo invece:

PHP:
  <?php
} else {

    session_start();
    $query = "SELECT id,username, nome FROM utenti WHERE username='" . $_POST['username'] . "' AND password='" . md5($_POST['password']) . "'";     
$nome = $row['nome']; <--------> Cartellino giallo

    $cerco = mysql_query($query);
    if (!$cerco) {
        echo "Errore query: <br/>$query<br/>" . mysql_error();
        mysql_error();
    } else {
     
    if (mysql_num_rows($cerco) == 1) {
        $row = mysql_fetch_assoc($cerco);        
        $_SESSION['nome'] = $row['nome'];
        $_SESSION['id'] = $row['id'];  
        header("Refresh: 0;URL=paginaris.php");   
    } else {
        
        header("Refresh: 2;URL=login.php");    
        echo "Utente non trovato";
    }
}
}
?>

Per favore controlli se la query messa così, è corretta ???? O va allungata ???

E questo è paginaris.php, e qua mi da un ! con circolino rosso (ribattezzato cartellino rosso). ti indico i punti:

PHP:
<?php

require_once("connetti.php");

session_start();

 

if $_SESSION['nome'] = $nome;  {
    
    
    echo "Ciao " . $_SESSION['nome'];  <--------> Cartellino rosso
} else {
    
   
    echo "Accesso non consentito";
}
?>

Grazie.
 
Ultima modifica:
questo lo puoi togliere
PHP:
$nome = $row['nome']; <--------> Cartellino giallo
hai gia fatto bene qui
PHP:
$_SESSION['nome'] = $row['nome'];
puoi aggiungere anche il livello
PHP:
$_SESSION['livello'] = $row['livello'];
ovviamente aggiungendo alla query ( SELECT id,nome,livello )

questa invece non è la sintassi corretta per una condizione
PHP:
if $_SESSION['nome'] = $nome;  {   
    echo "Ciao " . $_SESSION['nome'];  <--------> Cartellino rosso
}
ma va scritta cosi
PHP:
if(isset($_SESSION['nome']) && $_SESSION['livello'] = 0) {   
    echo "Ciao " . $_SESSION['nome'];
}
 
ciao
mi permetto di aggiungere a quello che dice criric:
non mettere quel ...... di indicazione
<--------> Cartellino rosso

usa i commenti se vuoi indicare

PHP:
//Cartellino rosso
oppure
PHP:
# Cartellino rosso
oppure
PHP:
/*Cartellino rosso*/
 

Discussioni simili