form per login con memorizzazione id utente da database

megarospo

Utente Attivo
25 Set 2007
147
0
0
questo script dovrebbe permettere di autenticare un utente e memorizzare il suo id presente nella tabella degli utenti del database, ma oltre a darmi dei notice, al comando print non mi restituiesce il risultato desiderato, ma mi dà:il tuo ID utente è: Resource id #3
che significa?


<?php
session_start();
dbconnect();

if ($_REQUEST['action'] == "login") {
$_SESSION['verified_user'] = "";
$result = mysql_query("SELECT id FROM user WHERE nick='".$_REQUEST['username']."' AND pass='".$_REQUEST['psw']."'");
if (mysql_num_rows($result) > 0) list($_SESSION['verified_user']) = mysql_fetch_row($result);
}

?>
<html>
<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<br><a href="log-in.php">Log in</a> - <a href="index.php">Index</a> - <a href="log-out.php">Log out</a><br>
<?php

echo"<br>";

if ($_SESSION['verified_user'] != "") {
echo"<b>Welcome.</b><br>";
} else {
if ($_REQUEST['action'] == "login" && $_SESSION['verified_user'] == '') {
echo"<font color=\"red\">Login error!</font><br><br>";
}
?>
<form name="login_form" action="log-in.php" method="post">
<input type="hidden" name="action" value="login">
Username: <input type="text" name="username">
Password: <input type="password" name="psw"> <input type="submit" name"Login" value="Login"></form>
<?php
}

function dbconnect() {
mysql_connect("localhost", "root", "");
@mysql_select_db("film") or die ("Unable to select database");
}
?>



<?php

print("il tuo ID utente è: $result <br>");

?>

</body>
</html>
 
prova mysql_fetch_array invece di mysql_fetch_row

Ho provato, ma non funziona:crying:
Per curiosità ho provato a scrivere una query simile, nella pagina che dovrebbe visualizzare l'id e ho indicato nella query dei dati certi, presenti nel database e ne ho richiesto la stampa (print): ....


Query su index.php $id_userfede = mysql_query("SELECT id FROM user WHERE nick='".$loginUsername."' AND pass='".$password."'");

Query su index2.php $id_userfede2 = mysql_query("SELECT id FROM user WHERE nick='fe2' AND pass='fe2'");

Richiesta di stampa su index2.php
<?php
print ("stampa id: $id_userfede<br>");
print ("stampa: $id_userfede2<br>");
?>

Risultati:
stampa id: 0
stampa: Resource id #4 :confused:

mmm. Non capisco proprio. il secondo risultato è una semplce query che non fa uso di form o sessioni. Mi aspettavo un risultato tranquillo??
Che ne pensi? Dove sbaglio??
 
ok. Ho capito dove era il problema:

" mysql_query() non ti restituisce un valore di campo di database, ma soltanto un handler (o puntatore) alla query effettuata.
Su questo handler puoi operare le chiamare mysql_num_rows() per conoscere il numero dei row ritornati, o mysql_fetch_array() o mysql_fetch_assoc() per ottenere i valori dei vari campi. "


così ho modificato di nuovo il codice così:

index.php
$query1="SELECT id FROM user WHERE nick='".$loginUsername."' AND pass='".$password."'";
$id_userfede2 = mysql_query("$query1") or die(mysql_error()); // esegue la query
if(mysql_num_rows($id_userfede2)) { // se la query ha restituito qualche riga (altrimenti il fetch darebbe errore)
$risultato=mysql_fetch_assoc($id_userfede2); // assegna la riga ad un array associativo
}
$_SESSION['$risultato'] = $risultato;




index2.php
if (isset($_SESSION['$risultato']))
$risultato=$_SESSION['$risultato'];
print_r($ris);


Fatto su un'unica pagina funziona. Su 2 invece pagine mi restituisce:
Parse error: parse error su index.php :dipser:
cosa ne pensi??
 
Ultima modifica:
ho risolto!!! ecco il codice

index.php
$query1="SELECT id FROM user WHERE nick='".$loginUsername."' AND pass='".$password."'";
$id_userfede2 = mysql_query("$query1") or die(mysql_error()); // esegue la query
if(mysql_num_rows($id_userfede2)) { // se la query ha restituito qualche riga (altrimenti il fetch darebbe errore)
$risultato=mysql_fetch_assoc($id_userfede2); // assegna la riga ad un array associativo
}
$_SESSION['$risultato'] = $risultato;


index2.php
if (isset($_SESSION['$risultato']))
$risultato=$_SESSION['$risultato'];
print_r($risultato);

Probabilmente mi giocava dei brutti scherzi ma memoria di Explorer. Dovevo svuotarla!!! grazie per l'auito:ilpirata:
 
A questo punto credevo che fosse facile prendere il valore ottenuto e inserirlo in un'altra tabella con una query ISERT, ma così non è.

Ho provato ha stampare il risultato in 2 modi:
......print_r($risultato)
$risultatofinale = array($risultato);
print ("questo è l'ID: $risultatofinale[0]");

e ottengo:
Array ( [id] => 2 ) questo è l'ID: Array

il n. 2 è in effetti l'id giustyo, ma se provo ha fare un semplice print per ottenere solo 2 (senza Array ( [id] => 2 )) ottengo Array
da cosa dipende???
Ciao e grazie
 

Discussioni simili