like e log

  • Creatore Discussione Creatore Discussione Trapano
  • Data di inizio Data di inizio

Trapano

Utente Attivo
27 Set 2012
238
0
16
49
Qualcuno saprebbe dirmi cosa c'è di sbagliato in questo script?

PHP:
<?php

include_once ("config.php");  
include_once ("connect.php");
 
 mysql_connect(localhost,$DB_user,$DB_password);
 @mysql_select_db($DB_name) or die("Impossibile selezionare il database."); 
 
 $query="SELECT * FROM oggetti WHERE id LIKE '180' "; 
 $risultati=mysql_query($query); 
 $num=mysql_numrows($risultati); 
mysql_close();  
 $i=0; 
 while ($i < $num) { 
     $psw=mysql_result($risultati,$i,"psw");
$usern= $psw; 
$passw= '123'; 
     $i++; 
 } 
 ?>

Se lo provo da solo, con un echo mi restituisce il valore che ho impostato nel db... ma se lo uso per accedere al login non mi fa entrare.
 
Rieccomi.... dunque.. ho tre file per un login..
il primo:
PHP:
<form method=POST action=login.php target="_top">
<input type=password name=user  size=20>
<input type=password name=pass  size=20><br>
<input type=submit value=Login>
<input type=reset value=Reset></form>

che richiama il secondo:
PHP:
<?

session_start();
include 'conf.php';
$user= $_POST['user'];
$pass= $_POST['pass'];

if((!$user) || (!$pass)){
echo "Inserire tutte le informazioni!";
header("Location: login.htm");
}else{
if($user==$usern && $pass==$passw){ 
$_SESSION['username'] = $usern;
header("Location: form.php");
}else{ 
header("Location: login.htm");
}
}
?>

e il file conf.php dove metto le psw:
PHP:
<?

$usern= 'ciao';
$passw= 'hola';

?>

Così tutto funziona...
Ma vorrei che le psw fossero in una tabella nel mio db.
Per cui vorrei modificare il file conf.php dicendogli di andare a prendere le psw nella tabella xxx che ha solo i campi id e psw.
Per cui in login.htm dovrei/vorrei digitare nel campo user, l'id che sarà 1 o 2 o 3 ecc... e nel campo pass il corrispondente psw.
Spero di essermi spiegato.
In questo modo sarebbe possibile entrare con 1 e campo corrispondente al 1, con 2 e campo corrispondente al 2 ecc...
 
Dunque elimina completamente il file conf.php e modifica così login.php:
PHP:
<?php
session_start();

$user = isset($_POST['user']) ? trim($_POST['user']) : '';
$pass = isset($_POST['pass']) ? trim($_POST['pass']) : '';

if ('' == $user || '' == $pass) {
    header('Location: login.htm');
    exit();
}

try {
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'password');
} catch (PDOException $e) {
    header('Location: login.htm');
    exit();
}

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stm = $pdo->prepare('SELECT * FROM tabella WHERE id = ? AND psw = ?');

try {
    $stm->execute(array($user, $pass));
} catch (PDOException $e) {
    header('Location: login.htm');
    exit();
}

if ($stm->rowCount() == 0) {
    header('Location: login.html');
    exit();
}

$_SESSION['username'] = $user;

header('Location: form.php');
Dovresti aggiungere:
  • una gestione decente degli errori: ora l'utente viene solo reindirizzato alla pagina di login senza avere idea di cosa sia accaduto;
  • l'hashing delle password: salvare le password in chiaro è pericolosissimo;
 
Ultima modifica:
ho copiato pari pari... aggiunto alla fine ?>
Ho inserito db name, passord ecc... ma non mi fa entrare... :-(
 

Discussioni simili