Area riservata con login e mysql

searedone

Utente Attivo
11 Giu 2010
508
0
0
Help meeee..... ho un problema che non riesco proprio a risolvere e vi giuro che è da ieri notte che impazzisco ..

Allora ho sempre usato aree login con database di testo ma mai con mysql , ne sto creando una con l'ausilio di un libro e tutto bene se non che non capisco perchè non funziona... chi mi aiuta a capire !?!? ecco il codice..

Il database ve lo risparmio dato che è già installato e già correttamente funzionante e anche creando un form di per l'invio delle password memorizza tutto ...

Il problema è che quando scrivo nome e password dovrebbe in caso di password o login errati rispondermi ( Bad login or password, please try again ) ma innvece ho sempre pagina bianca...

ho creato ovviamente anche un file con DB.php con all'interno le credenziale per il database ma niente sempre schermata bianca ...

che cavolo manca

Codice completo

Ps dimenticavo io di solito scrivo solo require (''); qui c'è require_once (''); puo' essere questo ?!?

index.php
PHP:
<html>
<head><title>Login</title></head>
<body>
<?php if ( $_GET['bad'] == 1 ) { ?>
<font color="red">Bad login or password, please try again<br/></font>
<?php } ?>
<form action="login.php" method="post">
<table width="300" border="0" cellspacing="0" cellpadding="2">
<tr><td>User name:</td><td><input type="text" name="user" /></td></tr>
<tr><td>Password:</td><td><input type="password" name="password" /></td></tr>
<tr><td colspan="2"><center><input type="submit" value="Login" /></center></td></tr>
</table>
</form>
</body>
</html>

login.php
PHP:
<?php
require_once( "DB.php" );
$dsn = 'mysql://root:password@localhost/time';
$db =& DB::Connect( $dsn, array() );
if (PEAR::isError($db)) { die($db->getMessage()); }

$res = $db->query( "SELECT id FROM users WHERE name=? AND password=MD5(?)",
	array( $_POST['user'], $_POST['password'] ) );

$row = array( null );
if ( $res != null )
	$res->fetchInto( $row );

if ( $row[0] != null )
{
		session_start();
		$_SESSION['user'] = $row[0];
		header( "Location: welcome.php" );
}
else
{
		header( "Location: index.php?bad=1" );
}
?>

welcome.php

PHP:
<?php
session_start();
if ( $_SESSION['user'] == null || $_SESSION['user'] < 1 )
{
		header( "Location: prova55.php" );
		exit;
}

require_once( "DB.php" );
$dsn = 'mysql://root:password@localhost/time';
$db =& DB::Connect( $dsn, array() );
if (PEAR::isError($db)) { die($db->getMessage()); }

$res = $db->query( "SELECT name FROM users WHERE id=?",
	array( $_SESSION['user'] ) );
$res->fetchInto( $row );
?>
<html>
<head><title>Welcome</title></head>
<body>
Welcome <?php echo( $row[0] ); ?><br/><br/>
<a href="logout.php">Logout</a>
</body>
</html>

Logout.php

PHP:
<?php
session_destroy();
header( "Location: index.php" );
?>
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Mhhh...

Io lo sto facendo aiutandomi con un libro ..

E il codice postato è quello che c'era pari passo , io poi ho creato aparte il form per l'invio delle password la tabella del database e quant'altro , ma questo script a detta del libro doveva funzionare cosi .. ma non vah !??!

Potresti aiutarmi mi piacerebbe davvero capire
 

micio86

Utente Attivo
Ecco

Non ti fungerà mai e poi mai.

Molto + simple:

$res = $db->query( "SELECT id FROM users WHERE name='$user' AND password='$password'",
if(mysql_num_rows($res)) {
allora salvi la tua sessione......
$_SESSION['id']=tuoidperesempio.
}
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ok per il primo pezzo e dopo provo subito, ma il secondo dove scrivi session !? Tuo id per esempio li cosa e dove devo metterlo !?! Non lo fa' in automatico una volta che cerca di loggarsi !?
 

micio86

Utente Attivo
Tu vuoi l'id dell'utente giusto?

$q=mysql_query("SELECT id FROM utenti WHERE name='$user' AND password='$password' LIMIT 1);
if(mysql_num_rows($q)) {
$_SESSION['id']=mysql_result($q,0,'id');//Qui salvi la sessione e hai l'id utente
}

Poi nelle pagine private fai:

session_start();
if($_SESSION['id']) {
//Qui fai la parte della pag privata
}
else {
echo "Per accedere a questa parte del sito devi effettuare il login";
}
 
Ultima modifica:

searedone

Utente Attivo
11 Giu 2010
508
0
0
Adesso purtroppo sono fuori e nn posso provare;( ma se nn ho capito male l'id me lo crea automaticamente.. Giusto ?!

Cmq appena posso provo e poi ti chiedo
 

micio86

Utente Attivo
MMm

Dipende da come hai fatto il tuo db.
Di solito un utente si iscrive o lo memorizzi a manoni ok?
Quindi avrà per forza un id di solito lo mette mysql se impostato come autoincrement.

Con la query tu chiedi proprio l'id dell'utente con quel name e quella password.
Se esiste allora memorizzi in una variabile di sessione, $_SESSION['id'], proprio l'id per comodità. Questa variabile sarà la tua chiave per determinare se l'utente è loggato.

Simple no? :mavieni:
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
micio86, mai sentito parlare di "prepared statements"? Ti consiglio di rispolverare le tue conoscenze di PHP. Quel codice dovrebbe invece funzionare perfettamente, perché i valori dei placeholder sono sostituiti correttamente. In giornata ci darò un'occhiata più approfondita e ti farò sapere meglio.
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
@micio Ho provato a mettere cio che mi hai postato ma niente !?!?

@alessandro 1997 non funziona ne con la stringa di micio ne con quella originale. una volta che metto login e password mi restituisce pagina bianca , rimane l'url del login e non mi restituisce la pagina index.php con la scritta Bad login or password, please try again come dovrebbe ...

MA che sbaglio ?!??!?! eppure anche il DB.php ho messo all'interno i dati corretti del db che ho installato e che funziona se provo ad inserire le password !?!?

Help
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ho dato un'occhiata ma non sono ancora cosi avanti in php :( magariiii

Ma guardando loscript secondo te perchè non funziona allora ?!?!?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Onestamente non ne ho idea. Dovrebbe funzionare. Anche se non ho mai usato il package MDB2 di PEAR uso PDO, che è abbastanza simile. Prova a scrivere nella pagina login.php questo:
PHP:
var_dump($row);
Prima del redirect. Vedi cosa stampa a video.
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Allora ho provato cosi ma niente sempre pagina bianca

PHP:
<?php
require_once( "DB.php" );
$dsn = 'mysql://root:password@localhost/time';
$db =& DB::Connect( $dsn, array() );
if (PEAR::isError($db)) { die($db->getMessage()); }

$res = $db->query( "SELECT id FROM users WHERE name=? AND password=MD5(?)",
	array( $_POST['user'], $_POST['password'] ) );


var_dump($row);  


$row = array( null );
if ( $res != null )
	$res->fetchInto( $row );

if ( $row[0] != null )
{
		session_start();
		$_SESSION['user'] = $row[0];
		header( "Location: welcome.php" );
}
else
{
		header( "Location: index.php?bad=1" );
}
?>
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Sorry, se mi intrometto ma sto cercando di fare un'area riservata con mysql ma oggi butta proprio male mìnon c'è libro che tenga...

Uff

@ eliox so che sei un mostro in php e proprio per questo non capisco perchè non mi funziona la tua area riservata _(

ti posto il codice spero che tu possa aiutarmi mi da sempre login errato ...

Come puoi vedere ho aggiunto un require per il database , la parte di iscrizione l'ho già fatta e funziona perfettamente ho verificato nel database memorizza le password e l'id , ho solo cambiato la tabella tua con users come potrai vedere...

login.php
PHP:
<?php

require ("db_connect.php"); 

?>

<?php 
session_start ();//facciamo partire la sessione
//controlliamo i dati inviati    
 if ((!isset($_POST['utente'])) && (!isset($_POST['password']))) 
 { 
// ecco il form
  echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\"> 
  User: <input type=\"text\" name=\"username\"><br> 
  Password: <input type=\"password\" name=\"password\"><br> 
  <input type=\"submit\" value=\"Invia\"></form>"; 
  }else{ 
// query in tabella
  $sql = mysql_query("SELECT * FROM users WHERE username='".$POST['username']."' AND '".$_POST['password']."'");
  if (mysql_num_rows($sql)>0)
  {
  $_SESSION['username']=$_POST['username']; 
  $_SESSION['password']=$_POST['password']; 
  header("Location: pagina_riservata.php");
  }
 else {echo "Login errato";} 
  }
?>

pagina_riservata.php

PHP:
<?php 
session_start(); 
if(isset($_SESSION['username'])&& isset($_SESSION['password'])) 
{ 
echo "Ciao " . $_SESSION['username'];  
}else{ 
header("Location: form.php"); 
} 
?>

sempre login errato
 
Discussioni simili
Autore Titolo Forum Risposte Data
M [WordPress] [HTML] AREA RISERVATA CON PROFILAZIONE WordPress 2
W. YouneS Area riservata con php e mysql PHP 0
Recover Area riservata con database PHP 11
gandalf1959 problema con header in area riservata PHP 4
A Area riservata con login e mysql ma nn mi logga PHP 1
I Area riservata con contenuto personalizzato per i registrati? CMS (Content Management System) 0
M Problema con form per accesso area riservata ai soci PHP 2
A problema con area riservata PHP 6
P Area riservata con frontpage PHP 10
S area riservata con mysql PHP 29
G Problema area riservata con IE PHP 6
R Problema con area riservata... PHP 4
G area riservata con phpbb3 phpBB 1
gandalf1959 [PHP] Verifica password per accesso ad area riservata PHP 3
F [PHP] Creare un'area web riservata PHP 13
W Area riservata sicura PHP MySQL PHP 12
I Area riservata in PHP PHP 2
I [PHP] CURL per accesso ad area riservata PHP 6
W [ASP] Password Login per area riservata Classic ASP 13
A area riservata in php senza data base PHP 19
Recover db in sola lettura su area riservata WordPress 1
L Accesso area riservata tramite QR code WordPress 3
A accesso area riservata nn funziona più PHP 1
E consigli per piccola area riservata PHP 4
Elisacau Area riservata.. WordPress 2
B Area Riservata/Download per Wordpress WordPress 3
N Primo accesso area riservata PHP 1
neo996sps PHP + MYSQL: Errore su accesso area riservata PHP 1
S Area riservata PHP PHP 3
F Area Riservata PHP+MySql - Chi mi corregge il codice??? PHP 18
J Creare file html da un form in area riservata PHP 9
B Aumentare livello di sicurezza accesso client area riservata Classic ASP 5
M Come creare un area riservata PHP 4
N impedire accesso area riservata a utenti registrati Database 3
D Creare Area RiservaTA PHP 8
A Area Riservata Manager - HELP !! PHP 2
R HTTP_REFERER e area riservata.. PHP 1
X Area Riservata Mysql+php PHP 13
SolidSnake4 area riservata PHP 20
borgo italia Accesso area riservata PHP 6
A area riservata asp Classic ASP 20
B creare un'area riservata PHP 1
N Area riservata proprio sito PHP 18
S Area Riservata Classic ASP 6
W Help - area riservata Classic ASP 3
I accesso area riservata multilivello PHP 1
W come si crea un area riservata HTML e CSS 5
D A ciascuno la prorioa area riservata PHP 0
K Area riservata - Limitazione tentativi inserimento PHP 0
K logout area riservata Classic ASP 1

Discussioni simili