login che indirizza gli utenti verso pagine diverse in base alla password immessa

  • Creatore Discussione Creatore Discussione tanaka
  • Data di inizio Data di inizio

tanaka

Nuovo Utente
13 Feb 2009
28
0
0
Ciao a tutti . Sono un neofita assoluto di programmazione in generale e mi stò dilettando con PHP .

Ho un problema che non riesco a capire e mi servirebbe il vostro aiuto .

Vi spiego : dovrei realizzare un login in PHP utilizzando Mysql . Il login deve essere reindirizzato verso pagine differenti in base all’ utente . Ho pensato di creare una tabella molto semplice di nome “login” dove ho come colonne : id , username , password , redirect .
Nella colonna redirect contavo di scrivere gli url ai quali vorrei reindirizzare gli utenti che si loggano ( una volta verificata l’ identita con user e password , ovviamente ) .

Già qui il primo dubbio : devo scrivere gli url nella classica forma http://www.sitodalinkare.com , oppure come ?

Ho trovato qualcosa in rete e l’ ho adattato alle mie esigenze , ma purtroppo non funziona in quanto non si sposta mai dalla pagina di login e non capisco il perché . Nemmeno se sbaglio volutamente il login visiono la pagina di errore presente nello script e nel contempo , se metto i dati corretti , resta ugualmente ferma lì … come mai ? Ve lo posto :


<?
$dbh=mysql_connect ("localhost", "miouserdatabase", "miapassworddatabase") or die ('Non posso connettermi al database perchè : ' . mysql_error());
mysql_select_db ("nomedelmiodatabase");
if(!isset($username) ||!isset($password)) {

// esce dal php e mostra la pagina di login

?>
<html>
<head>
<title>Login</title>
<head>
<body>
<form action="<?=$php_SELF?><?if($QUERY_STRING){ echo"?". $QUERY_STRING;}?>" method="POST">
<p align="center">L' ingresso è riservato . Si prega di inserire i propri dati.</p>
<table align="center" border="0">
<tr>
<th>
Username:
</th>
<th>
<input type="text" name="username">
</th>
</tr>
<tr>
<th>
password:
</th>
<th>
<input type="password" name="password">
</th>
</tr>
<tr>
<th colspan="2" align="right">
<input type="submit" value="Login">
</form>
</th>
</tr>
</table>
</body>
</html>
<?
exit();
}

// inizio la query al database

$sql = mysql_query("SELECT password,redirect FROM login WHERE username = '$username'");
$fetch_em = mysql_fetch_array($sql);
$numrows = mysql_num_rows($sql);
if($numrows!= "0" & $password == $fetch_em["password"]) {

// login corretto quindi reindirizzato

$valid_user = 1;
header("Location: ".$fetch_em["redirect"]);
exit;
}
else {
$valid_user = 0;
}

// se invece non trova corrispondenza di dati

if (!($valid_user))
{
// esce dal php e mostra la pagina di errore dove viene richiesto di riprovare
?>
<html>
<head>
<title>Login</title>
<head>
<body>
<form action="<?=$php_SELF?><?if($QUERY_STRING){ echo"?". $QUERY_STRING;}?>" method="POST">
<p align="center">Le informazioni inserite non sono corrette. Si prega di riprovare.</p>
<table align="center" border="0">
<tr>
<th>
Username:
</th>
<th>
<input type="text" name="username">
</th>
</tr>
<tr>
<th>
password:
</th>
<th>
<input type="password" name="password">
</th>
</tr>
<tr>
<th colspan="2" align="right">
<input type="submit" value="Login">
</form>
</th>
</tr>
</table>
</body>
</html>
<?
exit();
}
?>


riuscite ad aiutarmi ? perché non procede ? si crea un loop per cui mi rimanda sempre e in ogni caso alla pagina di login principale … perché ?

Và anche detto che una parte delle istruzioni presenti nello script neanche le conosco .. purtroppo non sono che un neofita .. ma ho voglia di imparare e migliorare .

Un grazie davvero grande a tutti in anticipo . Un saluto .
 
ciao
non sono molto esperto, ma volevo chiederti una cosa:
lo script che hai postato è su una stessa pagina?
se si, ti ritrovi due volte nella stessa pagina <html><head>...</head><body>...</body></html>
che non mi sembra corretto
inoltre (non so se è un errore di trascrizione) non chiudi il tag head
la funzione header() dovrebbe essere la prima prima di qualsiasi output
vedi
http://it.php.net/manual/en/function.header.php

forse è per questo che non ti funzia
 
allora, ordine:
e' una pessima abitudine quella di prendere script gia fatti e adattarli: o fa quello che vuoi o e' inutile. poi scrivendolo tu capisci come funziona, copiandolo e' un casino.

i passi sono pochi:

1)crei una tabella:
ID(intero) USER(stringa) PASSWORD(stringa) REDIRECT(stringa)

e fin qui ok. gli url del redirect salvali come http://www.sito.com, va bene
le passord ti consiglio di crittarle, ma questo è un altro discorso.

2)prelevi i dati con:
$dati=mysql_query(query)
if(mysql_num_rows($dati)==0) //ha sbagliato il login
while($arr=mysql_fetch_array){
echo 'redirect: <a href="'.$arr['REDIRECT'].'">'.$arr['REDIRECT'].'</a><br/>';
}
 
ciao
non sono molto esperto, ma volevo chiederti una cosa:
lo script che hai postato è su una stessa pagina?
se si, ti ritrovi due volte nella stessa pagina <html><head>...</head><body>...</body></html>
che non mi sembra corretto
inoltre (non so se è un errore di trascrizione) non chiudi il tag head
la funzione header() dovrebbe essere la prima prima di qualsiasi output
vedi
http://it.php.net/manual/en/function.header.php

forse è per questo che non ti funzia

Grazie mille per la segnalazione dei tanti errori !! proverò a sistemarla e vedere se così funge .

Mille grazie davvero .:fonzie:


Ps : purtroppo il problema non si è risolto , continua imperterrito a fare uguale a prima ... mah ?!

Grazie comunque !!!
 
Ultima modifica:
allora, ordine:
e' una pessima abitudine quella di prendere script gia fatti e adattarli: o fa quello che vuoi o e' inutile. poi scrivendolo tu capisci come funziona, copiandolo e' un casino.

i passi sono pochi:

1)crei una tabella:
ID(intero) USER(stringa) PASSWORD(stringa) REDIRECT(stringa)

e fin qui ok. gli url del redirect salvali come http://www.sito.com, va bene
le passord ti consiglio di crittarle, ma questo è un altro discorso.

2)prelevi i dati con:
$dati=mysql_query(query)
if(mysql_num_rows($dati)==0) //ha sbagliato il login
while($arr=mysql_fetch_array){
echo 'redirect: <a href="'.$arr['REDIRECT'].'">'.$arr['REDIRECT'].'</a><br/>';
}

Grazie infinite anche a te Greyfox , per il tempo che hai dedicato alla mie domande .

Devo dire che la mia immensa ignoranza non mi permette di capire pienamente come usare il tuo codice nel mio script .. potresti mica essere più chiaro ? Lo sò , rompo un pò le scatole , ma mi piacerebbe capire bene cosa fai e perchè .. credo sia l' unico modo per imparare ..

Grazie infinite a tutti .

:byebye:
 

Discussioni simili