Problema con login e cookie

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
ciao ragazzi ho un problema con questo login. se inserisco la password corretta si collega ma quando vado a ricaricare la pagina si scollega in automatico sapete dirmi il perchè?
PHP:
<?php
require_once('script/db_connect.php');
$pass = md5($_POST['pass']);
$user = htmlspecialchars($_POST['user']);



$query= "SELECT pass  FROM admin WHERE user='$user'";
$pass_query = mysql_query($query);
$dati_admin = mysql_fetch_assoc($pass_query);


echo $dati_admin['pass'] . " " . $pass;

if( $_COOKIE['pass'] != "" ) {
	
}
elseif($_POST['submit'] != "" && $_POST['pass'] != "" && $pass == $dati_admin['pass']) {
	
	setcookie("user", $user, 900000);
setcookie("pass", $pass, 900000);

} else { ?>
<div class="login">
 <form method="POST" action="">
 <input type="text" name="user" class="user"> <br>
 <input type="password" name="pass" class="pass"> <br>
 <input type="submit" name="submit" class="submit">
 </form>


</div>

<?php
exit();
}
?>
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Ti consiglio di usare una sessione in cui salvi l'ID dell'utente invece dei cookie, altrimenti a ogni accesso devi controllare che la password dell'utente sia quella corretta (o basterebbe creare un cookie per essere automaticamente autenticati).

Inoltre la tua applicazione è esposta a SQL injection, che permettono a un malintenzionato di cancellare il tuo intero database. Usa PDO invece della libreria mysql, che è di fatto deprecata.

Ecco un esempio di come potresti farlo:
PHP:
<?php
session_start();

if ('POST' === $_SERVER['REQUEST_METHOD']) {
    $username = isset($_POST['username']) ? trim($_POST['username']) : '';
    $password = isset($_POST['password']) ? trim($_POST['password']) : '';

    if ('' === $username || '' === $password) {
        die('Devi inserire le tue credenziali.');
    }

    try {
        $pdo = new PDO('mysql:host=localhost;dbname=auth', 'root', 'password');
    } catch (PDOException $e) {
        die('Errore interno.');
    }

    $stm = $pdo->prepare('SELECT id FROM users WHERE username = ? AND password = SHA1(?)');

    try {
        $stm->execute(array($username, $password));
    } catch (PDOException $e) {
        die('Errore interno.');
    }

    if ($stm->rowCount() > 0) {
        $user = $stm->fetchAssoc();
        $_SESSION['user_id'] = $user['id'];

        header('Location: index.php');
    } else {
        die('Credenziali non valide.');
    }
} else {
    echo <<<EOF
<form method="post" action="{$_SERVER['REQUEST_URI']}">
    <div>
        <label for="username">Username:</label>
        <input type="text" id="username" name="username">
    </div>

    <div>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password">
    </div>

    <button type="submit">Login</button>
</form>
EOF;
}
 

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
ho altre 3 domande.

La funzione try prova se funziona la connessione giusto?
Se voglio stampare a video dei valori estratti dal database con il PDO come devo fare?
E se invece li volessi introdurre dentro un ciclo while?

Ti ringrazio per l'aiuto che mi hai dato
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
try non è una funzione ma un costrutto per la gestione delle eccezioni. Il codice all'interno del costrutto viene eseguito. Se lancia qualche eccezione catturata da un blocco catch, il contenuto di quest'ultimo viene eseguito a sua volta.

Per recuperare i dati di una riga estratta dal database basta usare il metodo fetchAssoc() della classe PDOStatement. Se vuoi memorizzarli tutti in un array multidimensionale, usa fetchAll().
 

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
Però mi da questo errore sai dirmi il perche?

Fatal error: Call to undefined method PDOStatement::fetchAssoc() in /membri/laemmeallapi/stellazzurra/amministrazione/script/login.php on line 28
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
A quanto pare il metodo fetchAssoc() di PDOStatement non esiste. Devo essermi confuso con qualche libreria. Usa questa sintassi:
PHP:
$stm->fetch(PDO::FETCH_ASSOC);
Oppure puoi specificare l'attributo direttamente nella connessione:
PHP:
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
E in quel caso basterà chiamare fetch().
 
Discussioni simili
Autore Titolo Forum Risposte Data
A Problema login con Safari PHP 14
F Problema con pagine login in PHP PHP 2
Fuego2806 [Joomla] Problema di login con il nuovo template Joomla 0
S problema con ajax semplice login script Javascript 8
L problema login con variabili PHP 7
S Problema di login con PDO PHP 2
P Problema con login e password PHP 54
L Problema con login in Dreamweaver CS5 PHP 2
I [PHP]Problema sito con form login in ogni pagina PHP 7
T problema con la finestra di login riservata PHP 1
B Problema con login pagina web-collegamento al db Classic ASP 7
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
N Problema con position absolute e overflow HTML e CSS 4
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
K [PHP] Problema con variabili concatenate. PHP 1
O problema con query PHP 4
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
M Problema con Try Catch PHP 0
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
G Problema con eccessiva nitidezza apertura Camera Raw Photoshop 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
T problema con select dinamica con jquery Javascript 0

Discussioni simili