Trying to get property of non-object

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ragazzi chi mi sa aiutare a decifrare questo errore? Trying to get property of non-object
In una pagina di benvenuto al momento di confermare la registrazione ho questo errore. Qui di seguito markup della pagina
PHP:
if(isset($_GET['passkey'])){

$passkey = htmlspecialchars($_GET['passkey']);
	$sqlrecuperauser = "SELECT * FROM utenti_temp WHERE codiceconferma = '$passkey'";
					if ($result = $mysqli->query($sqlrecuperauser)) {
		$contauser = (($sqlrecuperauser->num_rows) == 1);

		if($contauser == 1){
		$rows = $sqlrecuperauser->fetch_array(MYSQLI_ASSOC);
		$nome = $rows ['nome'];
		$cognome = $rows ['cognome'];
		$eta = $rows ['eta'];
		$username = $rows['username'];
		$email = $rows['email'];
		$interessi = $rows ['interessi'];
		$password = $rows ['password'];
 	$password_cript = sha1 ($password);
		$data = date ("H:i d/m/Y");					
						
$sqlconfermauser = $mysqli->query("INSERT INTO utenti (data_iscrizione, username, email, nome, cognome, eta, interessi, password, password_crypt) VALUES ('$data', '$username', '$email', '$nome', '$cognome', '$eta', '$interessi','$password', '$password_cript')");							if ($sqlconfermauserok = $mysqli->query($sqlconfermauser)) {
					$contauserok = (($sqlconfermauserok->num_rows) == 1);
							
						echo '<div id="benvenuto">
						<p><h3>Benvenuto </h3></p>
						</div>';

						$sqleliminadati = $mysqli->query("DELETE FROM utenti_temp WHERE codiceconferma = '$passkey'");

					} else {

						echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto, riprova e se noti che il problema continua,
						avvisaci che provvederemo a sistemarlo. Grazie dallo staff Biblionet</h3></p></div>';
						echo "<meta http-equiv='Refresh' content='3000; URL=Newindex.php'>";
					}

				}

L'errore me lo da in questa linea
PHP:
$contauser = (($sqlrecuperauser->num_rows) == 1);

Grazie
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Semplice, tu gli passi la query come stringa non come risultato cioè come $result, fai cosi

PHP:
if ($result = $mysqli->query($sqlrecuperauser)) {

        if($result->num_rows== 1){


e anche dopo correggi
PHP:
$result->fetch_array(MYSQLI_ASSOC);
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Non posso più editare quindi lo scrivo qui, ho notato anche un'altra cosa, hai confuso htmlspecialchars per real_escape_string di mysqli, sono 2 cose differenti, il primo rimpiazza i caratteri html speciali (tipo apertura dei tag) e serve per prevenire codice html/js maligno (XSS) l'altra invece rimpiazza gli apici e permette di non far interrompere la query, quindi sostituisci anche quella

PHP:
$passkey = $mysqli->real_escape_string($_GET['passkey']);
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Grazie mille! Sei stato grande il problema è che adesso ho lo stesso errore ma su un altra riga questa
PHP:
								$confermauserrows = ($confermauserok->num_rows == 1);

ti inserisco il codice completo compreso di correzioni da te suggerite
PHP:
		if(isset($_GET['passkey'])){

				$passkey = $mysqli->real_escape_string($_GET['passkey']);

				$sqlrecuperauser = "SELECT * FROM utenti_temp WHERE codiceconferma = '$passkey'";
					if ($result = $mysqli->query($sqlrecuperauser)) {
						if ($result->num_rows == 1) {
						

							$rows = $result->fetch_array(MYSQLI_ASSOC);
							$nome = $rows ['nome'];
							$cognome = $rows ['cognome'];
							$eta = $rows ['eta'];
							$username = $rows['username'];
							$email = $rows['email'];
							$interessi = $rows ['interessi'];
							$password = $rows ['password'];
							$password_cript = sha1 ($password);
							$data = date ("H:i d/m/Y");

						$confermauser = "INSERT INTO utenti (data_iscrizione, username, email, nome, cognome, eta, interessi, password, password_crypt) VALUES ('$data', '$username', '$email', '$nome', '$cognome', '$eta', '$interessi','$password', '$password_cript')";
							if ($confermauserok = $mysqli->query($confermauser)) {
								$confermauserrows = ($confermauserok->num_rows == 1);

						echo '<div id="benvenuto">
						<p><h3>Benvenuto '.$username.' nel gruppo Biblionet</h3></p>
						Il tuo account è stato attivato da adesso potrai accedere completamente al sito cliccando sulla voce "Entra" e partecipare alle nostre iniziative.
						Ti ricordiamo che l\'iscrizione è gratuita, e che per ogni esigenza o problema
						 lo <a href="images/GRUPPO%20BIBLIONET.jpg" class="staff" img="images/GRUPPO%20BIBLIONET.jpg">Staff</a>
						 e gli animatori sono a tua disposizione.
						Ti auguriamo un buon 2013, ed una navigazione divertente e piacevole.
						</div>';

						$sqleliminadati = $mysqli->query("DELETE FROM utenti_temp WHERE codiceconferma = '$passkey'");
						} else {
									echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto, riprova e se noti che il problema continua,
									avvisaci che provvederemo a sistemarlo. Grazie dallo staff Biblionet</h3></p></div>';
									echo "<meta http-equiv='Refresh' content='300; URL=Newindex.php'>";
						}
					}
				} else {

						echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto 2, riprova e se noti che il problema continua,
						avvisaci che provvederemo a sistemarlo. Grazie dallo staff Biblionet</h3></p></div>';
						echo "<meta http-equiv='Refresh' content='3000; URL=Newindex.php'>";
					}
				

		} else {
			echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto 2, riprova e se noti che il problema continua,
			    avvisaci che provvederemo a sistemarlo. Grazie dallo staff Biblionet 3</h3></p></div>';
				echo "<meta http-equiv='Refresh' content='300; URL=Newindex.php'>";
			
		}

Mi sai dare una mano? Grazie
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Stampa la query con die() o echo e riportala qui oppure controlla se ci sono errori
PHP:
if ($confermauserok = $mysqli->query($confermauser) or die($mysqli->error)){ //...


Inoltre questa parte
PHP:
$rows = $result->fetch_array(MYSQLI_ASSOC); 
$nome = $rows ['nome']; 
$cognome = $rows ['cognome']; 
$eta = $rows ['eta']; 
$username = $rows['username']; 
$email = $rows['email']; 
$interessi = $rows ['interessi']; 
$password = $rows ['password'];

è riassumibile in
PHP:
$rows = $result->fetch_assoc(); 
extract($rows,EXTR_OVERWRITE);
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Stampa la query con die() o echo e riportala qui oppure controlla se ci sono errori
PHP:
if ($confermauserok = $mysqli->query($confermauser) or die($mysqli->error)){ //...


Inoltre questa parte
PHP:
$rows = $result->fetch_array(MYSQLI_ASSOC); 
$nome = $rows ['nome']; 
$cognome = $rows ['cognome']; 
$eta = $rows ['eta']; 
$username = $rows['username']; 
$email = $rows['email']; 
$interessi = $rows ['interessi']; 
$password = $rows ['password'];

è riassumibile in
PHP:
$rows = $result->fetch_assoc(); 
extract($rows,EXTR_OVERWRITE);

Intanto grazie per la velocità della risposta, ti dico che inserendo i die come suggerito non ho problemi, invece ho l'errore oggetto del threrad in questa riga
PHP:
	$confermauserrows = ($confermauserok->num_rows == 1);
praticamente il codice è divetntato così
PHP:
if(isset($_GET['passkey'])){

				$passkey = $mysqli->real_escape_string($_GET['passkey']);

				$sqlrecuperauser = "SELECT * FROM utenti_temp WHERE codiceconferma = '$passkey'";
					if ($result = $mysqli->query($sqlrecuperauser)) {
						if ($result->num_rows == 1) {
						
						//if ($contauser = (($sqlrecuperauser->num_rows) == 1));

						//if($contauser == 1){

							$rows = $result->fetch_assoc();
							extract($rows, EXTR_OVERWRITE);
							$password_cript = sha1 ($password);
							$data = date ("H:i d/m/Y");

						$confermauser = "INSERT INTO utenti (data_iscrizione, username, email, nome, cognome, eta, interessi, password, password_crypt) VALUES ('$data', '$username', '$email', '$nome', '$cognome', '$eta', '$interessi','$password', '$password_cript')";
							if ($confermauserok = $mysqli->query($confermauser)or die($mysqli->error)) {
								$confermauserrows = ($confermauserok->num_rows == 1);

						echo '<div id="benvenuto">
						<p><h3>Benvenuto '.$username.' nel gruppo Biblionet</h3></p>
						Il tuo account è stato attivato da adesso potrai accedere completamente al sito cliccando sulla voce "Entra" e partecipare alle nostre iniziative.
						Ti ricordiamo che l\'iscrizione è gratuita, e che per ogni esigenza o problema
						 lo <a href="images/GRUPPO%20BIBLIONET.jpg" class="staff" img="images/GRUPPO%20BIBLIONET.jpg">Staff</a>
						 e gli animatori sono a tua disposizione.
						Ti auguriamo un buon 2013, ed una navigazione divertente e piacevole.
						</div>';

						$sqleliminadati = $mysqli->query("DELETE FROM utenti_temp WHERE codiceconferma = '$passkey'");
						} else {
									echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto, riprova e se noti che il problema continua,
									avvisaci che provvederemo a sistemarlo. Grazie dallo staff Biblionet</h3></p></div>';
									echo "<meta http-equiv='Refresh' content='300; URL=Newindex.php'>";
						}
					}
				} else {

						echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto 2, riprova e se noti che il problema continua,
						avvisaci che provvederemo a sistemarlo. Grazie dallo staff Biblionet</h3></p></div>';
						echo "<meta http-equiv='Refresh' content='3000; URL=Newindex.php'>";
					}
				

		} else {
			echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto 2, riprova e se noti che il problema continua,
			    avvisaci che provvederemo a sistemarlo. Grazie dallo staff Biblionet 3</h3></p></div>';
				echo "<meta http-equiv='Refresh' content='300; URL=Newindex.php'>";
			
		}
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Beh puoi anche toglierlo, ho notato solo ora che lo stai utilizzando su un insert into, quindi è praticamente inutile e credo proprio che non venga nemmeno settato, ti basta la conferma della query o in alternativa puoi controllare $mysqli->insert_id
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Beh puoi anche toglierlo, ho notato solo ora che lo stai utilizzando su un insert into, quindi è praticamente inutile e credo proprio che non venga nemmeno settato, ti basta la conferma della query o in alternativa puoi controllare $mysqli->insert_id

Scusami ma non ho capito cosa devo togliere. Quanto a questo errore
PHP:
 $confermauserrows = ($confermauserok->num_rows == 1);
cosa posso fare?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Non so veramente come ringraziarti!!!! :beer::beer::beer::beer: il problema sembra essersi risolto. ho ancora due domande, visto che sei così disponibile. La prima è come faccio a risolvere il problema delle sessioni, Ho un menù dove ho inserito questo codice
PHP:
if (isset($_SESSION['username'])){
					echo "<li><font color=\"white\">Ciao,&nbsp</font> ".$_SESSION['username']."<a href='login3a.php?azione=logout'>Esci</a></li>";
				} else {
					echo "<font color=\"white\">Ciao utente,</font> <a href='login3a.php?azione=login'>Entra</a> <font color=\"white\"> o </font><a href='TEST FORM REAL TIME.php'>Registrati</a>";
				}
che se funzioasse dovrebbe darmi il nome dell'utente loggato ma non mi restituisce nulla.

La seconda domanda, visto che mi hai risolto sto problema, sai darmi consigli su come imparare e capire la programmazione con php e mysqli? Cioè in parole povere dove sbatto la testa per poter fare ciò che mi hai detto tu?

Grazie ancora
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Il funzionamento di quel codice dipende da dove viene settato $_SESSION['username'], quindi accertati del punto dove questa non viene settata e postalo

Per la seconda domanda bastano 3 cose:
-Zio google
-Il capitolo del vangelo riguardante mysqli che puoi trovare qui
-E un po di logica, inoltre una conoscenza (anche di base) del paradigma ad oggetti in php ti puo essere molto utile

ps: ovviamente hai messo il session_start() dove utilizzi le sessioni no?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ma guarda il session_start() l'ho inserito in tutte le mie pagine all'inizio come dice il manuale quindi prima di ogni output, quanto al $_SESSION['username'] come vedi l'ho messo qua
PHP:
				if (isset($_SESSION['username'])){
					echo "<li><font color=\"white\">Ciao,&nbsp</font> ".$_SESSION['username']."<a href='login3a.php?azione=logout'>Esci</a></li>";
				} else {
					echo "<font color=\"white\">Ciao utente,</font> <a href='login3a.php?azione=login'>Entra</a> <font color=\"white\"> o </font><a href='TEST FORM REAL TIME.php'>Registrati</a>";
				}
che è l'ultima parte del menù prima di questo codice trovo le voci, home, foto, etc, etc. Mentre nella pagina di login che ha un form normalissimo, punta al file di controllo che è questo
PHP:
if(isset($_POST['invia'])){

	if($_SERVER['REQUEST_METHOD'] == 'POST'){

		$username 	= 	$mysqli->real_escape_string(trim($_POST['username']));
		$password 	= 	$mysqli->real_escape_string(trim($_POST['password']));

		if (empty($username)) {

			echo "Devi inserire il tuo username";

		} elseif (empty($password)) {

			echo "Devi inserire la password";

		} else {

	$password_crypt = sha1($password);

			//Eseguo l'interrogazione al DB
			$recuperadati = ("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_crypt'");
			if ($risultato_recdati = $mysqli->query($recuperadati)or die($mysqli->error)){
			
			//Controllo i dati provenienti dall'interrogazione del DB
			$rows = $risultato_recdati->num_rows == 1;
				
			
				while($rows = mysqli_fetch_array($risultato_recdati, MYSQLI_ASSOC))
					var_dump($row);
				$_SESSION['username'] = $rows['username'];
				echo '<div id="login"><p><h3>Ciao, '.$username.'</h3></p></div>';
				echo "Login effettuato con successo!";
				header("Refresh: 3; URL= Newindex.php");
				} else {

					echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto, Non abbiamo nessuno registrato con questi dati. Riprova
					 ad inserire i dati, oppure <a href="TEST%20FORM%20REAL%20TIME.php"> Registrati</a>, &egrave gratis!
					Grazie dallo staff Biblionet</h3></p></div>';
					echo "<meta http-equiv='Refresh' content='300; URL=Newindex.php'>";
				}
			}
	}
}
sapresati darmi qualche dritta?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Prova intanto sistemando quella parte

PHP:
//...
$recuperadati = "SELECT * FROM utenti WHERE username = '$username' AND password = '$password_crypt'"; 
            if ($risultato_recdati = $mysqli->query($recuperadati)or die($mysqli->error)){ 
            //Controllo i dati provenienti dall'interrogazione del DB 
            if($risultato_recdati->num_rows == 1){
                $_SESSION['username'] = $username; 
                echo '<div id="login"><p><h3>Ciao, '.$username.'</h3></p></div>'; 
                echo "Login effettuato con successo!"; 
                header("Refresh: 3; URL= Newindex.php"); 
//...

Inoltre questo non ti serve a molto (puoi tenerlo come controllo aggiuntivo comunque)
PHP:
if($_SERVER['REQUEST_METHOD'] == 'POST'){
dato che fai prima a controllare se è settata una variabile di $_POST (come hai fatto prima infatti)
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Putroppo non è cambiato nulla qui il codice corretto
PHP:
if(isset($_POST['invia'])){

	if($_SERVER['REQUEST_METHOD'] == 'POST'){

		$username 	= 	$mysqli->real_escape_string(trim($_POST['username']));
		$password 	= 	$mysqli->real_escape_string(trim($_POST['password']));

		if (empty($username)) {

			echo "Devi inserire il tuo username";

		} elseif (empty($password)) {

			echo "Devi inserire la password";

		} else {

	$password_crypt = sha1($password);

			//Eseguo l'interrogazione al DB
			$recuperadati = "SELECT * FROM utenti WHERE username = '$username' AND password = '$password_crypt'";
			if ($risultato_recdati = $mysqli->query($recuperadati)or die($mysqli->error)){
			
			//Controllo i dati provenienti dall'interrogazione del DB
			if ($risultato_recdati->num_rows == 1) {
				$_SESSION['username'] = $username;
				echo '<div id="login"><p><h3>Ciao, '.$username.'</h3></p></div>';
				echo "Login effettuato con successo!";
				header("Refresh: 3; URL= Newindex.php");
			} else {
				echo "<meta http-equiv='Refresh' content='300; URL=Newindex.php'>";
			}
			
			//if (mysqli_num_rows($risultato_recdati) == 1){
				//Il risultato è sotto forma di array associativo quindi soltanto NOMI senza NUMERI
				while($rows = mysqli_fetch_array($risultato_recdati, MYSQLI_BOTH))
				
				$_SESSION['username'] = $rows['username'];
				echo '<div id="login"><p><h3>Ciao, '.$username.'</h3></p></div>';
				echo "Login effettuato con successo!";
				header("Refresh: 3; URL= Newindex.php");
				} else {

					echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto, Non abbiamo nessuno registrato con questi dati. Riprova
					 ad inserire i dati, oppure <a href="TEST%20FORM%20REAL%20TIME.php"> Registrati</a>, &egrave gratis!
					Grazie dallo staff Biblionet</h3></p></div>';
					echo "<meta http-equiv='Refresh' content='300; URL=Newindex.php'>";
				}
			}
	}
}
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Putroppo non è cambiato nulla qui il codice corretto
PHP:
if(isset($_POST['invia'])){

	if($_SERVER['REQUEST_METHOD'] == 'POST'){

		$username 	= 	$mysqli->real_escape_string(trim($_POST['username']));
		$password 	= 	$mysqli->real_escape_string(trim($_POST['password']));

		if (empty($username)) {

			echo "Devi inserire il tuo username";

		} elseif (empty($password)) {

			echo "Devi inserire la password";

		} else {

	$password_crypt = sha1($password);

			//Eseguo l'interrogazione al DB
			$recuperadati = "SELECT * FROM utenti WHERE username = '$username' AND password = '$password_crypt'";
			if ($risultato_recdati = $mysqli->query($recuperadati)or die($mysqli->error)){
			
			//Controllo i dati provenienti dall'interrogazione del DB
			if ($risultato_recdati->num_rows == 1) {
				$_SESSION['username'] = $username;
				echo '<div id="login"><p><h3>Ciao, '.$username.'</h3></p></div>';
				echo "Login effettuato con successo!";
				header("Refresh: 3; URL= Newindex.php");
			} else {
				echo "<meta http-equiv='Refresh' content='300; URL=Newindex.php'>";
			}
			
			//if (mysqli_num_rows($risultato_recdati) == 1){
				//Il risultato è sotto forma di array associativo quindi soltanto NOMI senza NUMERI
				while($rows = mysqli_fetch_array($risultato_recdati, MYSQLI_BOTH))
				
				$_SESSION['username'] = $rows['username'];
				echo '<div id="login"><p><h3>Ciao, '.$username.'</h3></p></div>';
				echo "Login effettuato con successo!";
				header("Refresh: 3; URL= Newindex.php");
				} else {

					echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto, Non abbiamo nessuno registrato con questi dati. Riprova
					 ad inserire i dati, oppure <a href="TEST%20FORM%20REAL%20TIME.php"> Registrati</a>, &egrave gratis!
					Grazie dallo staff Biblionet</h3></p></div>';
					echo "<meta http-equiv='Refresh' content='300; URL=Newindex.php'>";
				}
			}
	}
}
Il login è andato a buon fine? Hai fatto un var_dump di $_SESSION nella stessa pagina per vedere se era settato? Hai fatto qualche altra prova in altre pagine? Cosa c'è prima dell'if che controlla la sessione nella home?

edit:
Inoltre togli questa parte di codice
PHP:
                while($rows = mysqli_fetch_array($risultato_recdati, MYSQLI_BOTH)) 
                 
                $_SESSION['username'] = $rows['username']; 
                echo '<div id="login"><p><h3>Ciao, '.$username.'</h3></p></div>'; 
                echo "Login effettuato con successo!"; 
                header("Refresh: 3; URL= Newindex.php");

Quella che ti ho postato fa già tutto questo
 
Ultima modifica:

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ciao eccomi al rientro dopo il lavoro. Vediamo se riesco a fare qualcosa. Dopo la tua correzione il login lo faccio senza problemi, questo è il codice completo della pagina di login
PHP:
<?php

include_once('config2.php');

if(isset($_POST['invia'])){

	if($_SERVER['REQUEST_METHOD'] == 'POST'){

		$username 	= 	$mysqli->real_escape_string(trim($_POST['username']));
		$password 	= 	$mysqli->real_escape_string(trim($_POST['password']));

		if (empty($username)) {

			echo "Devi inserire il tuo username";

		} elseif (empty($password)) {

			echo "Devi inserire la password";

		} else {

	$password_crypt = sha1($password);

			//Eseguo l'interrogazione al DB
			$recuperadati = "SELECT * FROM utenti WHERE username = '$username' AND password = '$password_crypt'";
			if ($risultato_recdati = $mysqli->query($recuperadati)or die($mysqli->error)){

			//Controllo i dati provenienti dall'interrogazione del DB
			if ($risultato_recdati->num_rows == 1) {
				$_SESSION['username'] = $username;
				echo '<div id="login"><p><h3>Ciao, '.$username.'</h3></p></div>';
				echo "Login effettuato con successo!";
				header("Refresh: 3; URL= Newindex.php");
			} else {
				echo "<meta http-equiv='Refresh' content='300; URL=Newindex.php'>";
			}


				//Il risultato è sotto forma di array associativo quindi soltanto NOMI senza NUMERI
				while($rows = mysqli_fetch_array($risultato_recdati, MYSQLI_BOTH))

				$_SESSION['username'] = $rows['username'];
				echo '<div id="login"><p><h3>Ciao, '.$username.'</h3></p></div>';
				echo "Login effettuato con successo!";
				header("Refresh: 3; URL= Newindex.php");
				} else {

					echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto, Non abbiamo nessuno registrato con questi dati. Riprova
					 ad inserire i dati, oppure <a href="TEST%20FORM%20REAL%20TIME.php"> Registrati</a>, &egrave gratis!
					Grazie dallo staff Biblionet</h3></p></div>';
					echo "<meta http-equiv='Refresh' content='300; URL=Newindex.php'>";
				}
			}
	}
}
?>
al momento dell'inserimento dei dati ottengo la conferma del login come evidenziato in questa riga
PHP:
echo '<div id="login"><p><h3>Ciao, '.$username.'</h3></p></div>';echo "Login effettuato con successo!";
non ho altre pagine per fare il test, il codice è univoco, è un file header che inserisco nell'html. Se elimino il codice che mi dici non mi appare nulla. Ti allego il codice senza il blocco while
PHP:
<?php

include_once('config2.php');

if(isset($_POST['invia'])){

	if($_SERVER['REQUEST_METHOD'] == 'POST'){

		$username 	= 	$mysqli->real_escape_string(trim($_POST['username']));
		$password 	= 	$mysqli->real_escape_string(trim($_POST['password']));

		if (empty($username)) {

			echo "Devi inserire il tuo username";

		} elseif (empty($password)) {

			echo "Devi inserire la password";

		} else {

	$password_crypt = sha1($password);

			//Eseguo l'interrogazione al DB
			$recuperadati = "SELECT * FROM utenti WHERE username = '$username' AND password = '$password_crypt'";
			if ($risultato_recdati = $mysqli->query($recuperadati)or die($mysqli->error)){

			//Controllo i dati provenienti dall'interrogazione del DB

			if ($risultato_recdati->num_rows == 1) {
				$_SESSION['username'] = $username;
				echo '<div id="login"><p><h3>Ciao, '.$username.'</h3></p></div>';
				echo "Login effettuato con successo!";
				header("Refresh: 3; URL= Newindex.php");
			} else {
				echo "<meta http-equiv='Refresh' content='300; URL=Newindex.php'>";
				echo "<Errore!'>";
			}
				
				} else {

					echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto, Non abbiamo nessuno registrato con questi dati. Riprova
					 ad inserire i dati, oppure <a href="TEST%20FORM%20REAL%20TIME.php"> Registrati</a>, &egrave gratis!
					Grazie dallo staff Biblionet</h3></p></div>';
					echo "<meta http-equiv='Refresh' content='300; URL=Newindex.php'>";
				}
			}
	}
}
?>
P.S. il controllo lo faccio sia in locale con js sia su server con php, come posso fare per far apparire la stessa pagina, in questo caso login, ma con l'avviso che deve compilare lo spazio username? se uso js mi da un flag ma se clicco su invia il codice viene controllato da php lato server ma mi restituisce una stringa su fondo bianco.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Scusa non posso modificare il post precedente. Il login è corretto sono io che cancellavo troppe cose. Comunque non mi appare nella barra del menù. Ti confermo che inserendo i dati ottengo esito positivo ma non capisco come fare per "attivare" la sessione.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Scusa non posso modificare il post precedente. Il login è corretto sono io che cancellavo troppe cose. Comunque non mi appare nella barra del menù. Ti confermo che inserendo i dati ottengo esito positivo ma non capisco come fare per "attivare" la sessione.
Posta la parte prima del controllo della sessione, inoltre il session_start() si trova nel config2.php in cima?

Prova anche con dei var_dump sparsi sulla sessione per vedere quello che contiene
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
il session_start() è all'inizio di ogni pagina che ho fatto. Purtroppo per il momento il file header che contiente il menù è posizionato all'apertura del body ed è così composto
PHP:
<?php
	include_once 'config2.php';
?>
<div id="logo">	<img src="Images/logo nuovo biblio2tondo.jpg" width="974" height="200" alt="" /></div>
	<div class="menu">
		<ul class="primo">
			<li class='active'><a href='Newindex.php'><span>Home</span></a>
				<ul>
					<li><a href="Dove Siamo.php"><span>Dove Siamo</span></a></li>
					<li><a href="Chi Siamo.php"><span>Chi Siamo</span></a></li>
					<li><a href="Regolamenti.php"><span>Regolamenti</span></a></li>
				</ul>
			</li>
			<li class="secondo"><a href='Foto.php'><span>Foto</span></a>
				<ul class="secondo">
					<li><a href='Video.php'><span>Video</span></a></li>
					<li><a href='Giochi.php'><span>Giochi</span></a></li>
					<li><a href='Teca.php'><span>Teca</span></a></li>
				</ul>
			</li>
			<li class="terzo"><a href='Iniziative.html'><span>Iniziative</span></a>
				<ul class="terzo">
					<li><a href='Corsi.html'><span>Corsi</span></a></li>
					<li><a href='Attivit&agrave;.html'><span>Attivit&agrave;</span></a></li>
					<li><a href='Premi.html'><span>Premi</span></a></li>
					<li><a href='Tornei.html'><span>Tornei</span></a></li>
				</ul>
			</li>
			<li><a href="Modding.php"><span>Modding</span></a>
				<ul>
					<li><a href='LMC9.php'><span>Lucca Modding Contest 2009</span></a></li>
					<li><a href='LMC10.php'><span>Lucca Modding Contest 2010</span></a></li>
					<li><a href='LMC11.php'><span>Lucca Modding Contest 2011</span></a></li>
					<li><a href='LMC12.php'><span>Lucca Modding Contest 2012</span></a></li>
				</ul>
			</li>
				<li><a href='Contatti2.php'><span>Contatti</span></a></li>

			<li><?php
				if (isset($_SESSION['username'])){
					echo "<li><font color=\"white\">Ciao,&nbsp</font> ".$_SESSION['username']."<a href='login3a.php?azione=logout'>Esci</a></li>";
				} else {
					echo "<font color=\"white\">Ciao utente,</font> <a href='login3a.php?azione=login'>Entra</a> <font color=\"white\"> o </font><a href='TEST FORM REAL TIME.php'>Registrati</a>";
				}
				?>
			</li>

	</ul>
</div>
Farò le verifiche con i var_dump

Mi sono accorto però che se inserisco i nome di un utente qualsiasi ed una password qualsiasi lui mi da sempre esito positivo! Qualcosa non funziona bene
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
G Errore Cannot read property 'childNodes' of undefined per mancanza nodo nel file xml XML 6
A errore: Unable to get property 'inline' of undefined or null reference jQuery 1
F Errore "Access to undeclared static property" PHP 1
Eugene Open Graph e meta property: solo per facebook? SEO e Posizionamento 0
K modifiche a wp property WordPress 2
B Uncaught TypeError: Cannot read property Javascript 7
T Fatal error: Cannot access empty property PHP 2
C property: passare dati tra uc e aspx ASP.NET 0
felino Mac OS e Client Mail: Stato non in linea Mac e Software 2
I nome utente non esiste nel database PHP 1
M Drag and Drop non capisco le sequenze... Javascript 1
L Suggerimento Pagespeed per non vedenti HTML e CSS 0
F comando di inclusione file audio in I-Pad non funziona HTML e CSS 1
M Immagini non usate WordPress 0
B Non riesco a trovare i cognomi con i caratteri speciali in Access (Microsoft 365) MS Access 0
G Numero zero null non deve visualizzare nulla PHP 0
F Paypal _xclick IPN non risponde PHP 1
R Variabile non risconosciuta dentro una funzione PHP 1
C ACCESS Aprire maschera se valore non presente in una combo MS Access 7
E Alert non viene mostrato PHP 1
felino Hardisk WD SATA 1TB 3.5" non si avvia! Hardware 4
K Scrip non funzionante Javascript 1
R jquery che cambia css di un elemento non mi funziona sulla pagina caricata da ajax Ajax 5
zorro CREATE TABLE non funziona PHP 6
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
Sevenjeak Php8 non carica estenzioni PHP 0
R query DELETE non cancella i record PHP 1
otto9due Input text: accetta solo numeri e non può essere vuoto. Javascript 9
G Non vedo frecce su forme Photoshop 2
G Il mio sito dopo aver abilitato l'ssl non visualizza le immagini con indirizzi senza ssl HTML e CSS 0
P jquery refresh div non funziona Javascript 0
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
S Certificato SSL non funzionante Domini 0
zorro modulo di registrazione: funziona ma non sempre PHP 2
D Form contatti non funzionante HTML e CSS 0
MarcoGrazia Trovare record nel database partendo da id non sequenziali PHP 6
M Non ho rinnovato il mio sito su Aruba... Domini 1
T IP INFO NON FUNZIONA PHP 0
Shyson Google search non trova il mio sito SEO e Posizionamento 1
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
P Data scraping in PHP non funziona PHP 4
otto9due $_FILE non passa i dati dal form PHP 1
keyascii Non è mai troppo tardi Presentati al Forum 0
N dati tabella non presi PHP 1
P Pagina modifica record che non funziona PHP 0
Shyson AUTO_INCREMENT non si aggiorna MySQL 2
Shyson Codice wp-login non funziona PHP 2
S WORDPRESS NON FA INSTALLARE PIU NULLA WordPress 9
Shyson Non mi fa accedere al sito WordPress 12
N Non Autorizzato. Dovresti rimuovere il parametro customize_messenger_channel per visualizzare l'anteprima in frontend. WordPress 1

Discussioni simili