Errore nell'invio query

Ciao, ho cambiato il titolo
sicuro che sia
PHP:
if ($result->errno) {
e non
PHP:
if ($mysqli->errno) {
?
 
quell'istruzione comunque verifica se la query è stata eseguita correttamente ma non se restituisce qualche risultato
modifica il controllo cosi
PHP:
if ($result->num_rows == 0) {
    printf("Nome utente o password errati: <br/> %s", $mysqli->error);
    exit();
} else {
    session_start();
    $_SESSION['user_id'] = $record['id'];
    echo "Utente registrato coretatmente!";
}
 
Se hai pagina bianca c'è qualcosa che non va di fondo.
In entrambi i casi dovrebbe stampare qualcosa a video.
 
potrebbe essere il require, di solito sbagliando percorso del file da questo tipo di errore
 
In effetti guardando meglio il codice hai sbagliato l'esecuzione della query
PHP:
// preparo ed invio la query
    $query = $mysqli->real_query("SELECT id FROM users WHERE username = '$user' AND password = '$pwd'");
    
// controllo l'esito
    $result = $mysqli->query($query);
modifica cosi
PHP:
// preparo  la query
    $query ="SELECT id FROM users WHERE username = '$user' AND password = '$pwd'";
    
// la eseguo
    $result = $mysqli->query($query);
 
In effetti guardando meglio il codice hai sbagliato l'esecuzione della query
PHP:
// preparo ed invio la query
    $query = $mysqli->real_query("SELECT id FROM users WHERE username = '$user' AND password = '$pwd'");
    
// controllo l'esito
    $result = $mysqli->query($query);
modifica cosi
PHP:
// preparo  la query
    $query ="SELECT id FROM users WHERE username = '$user' AND password = '$pwd'";
    
// la eseguo
    $result = $mysqli->query($query);

Niente caro, anche questa volta restituisce pagina bianca... e io mi chiedo se sto facendo perdere tempo a voi inutilmente con qualcosa di fondo sbagliato.. ma vi assicuro che non è così.. Mistero !!
 
inizia a mettere degli echo in tutto il codice per vedere dove si blocca
PHP:
<?php
echo "inizio";
include_once 'connessione.php';
echo "connessione";
$user = trim($_POST['user']);
$pwd  = trim($_POST['pwd']);
echo "recupero post";

etc etc
in questo modo riuscirai a capire dove si blocca
 
PHP:
<?php
require_once 'connessione.php';
echo 'uno';
$user = trim($_POST['user']);
$pwd  = trim($_POST['pwd']);
echo '2';
$user = $mysqli -> mysql_real_escape_string($user);
$pwd = $mysqli ->mysql_real_escape_string($pwd);	
$pwd= md5($pwd); 
echo 'tre';
.....

Okk si blocca al punto 2, il terzo non lo stampa già !
 
la sintssi corretta è cosi
PHP:
$user = $mysqli->real_escape_string($user);
 
la sintssi corretta è cosi
PHP:
$user = $mysqli->real_escape_string($user);

Caspita è vero chisà da dove mi è uscito quel mysql_ ..grazie mille criric ora funziona perfettamente !
Mi rimane solo una domanda.. ora che gli utenti si possono autentificare ci saranno pagine protette e pagine non protette.
Per proteggere queste pagine basta che inserisco queste righe all'inizio della mia pagina, vero?
PHP:
<?php
require_once 'connessione.php';
session_start();
$_SESSION['user_id'] = $record['id'];
?>
 
Dovresti mettere un reindirizzamento che avviene quando non c'è una sessione attiva.
Così facendo obblighi l'utente a fare il login prima di andare avanti.
 
Dovresti mettere un reindirizzamento che avviene quando non c'è una sessione attiva.
Così facendo obblighi l'utente a fare il login prima di andare avanti.

PHP:
if ($result->num_rows == 0) {
    printf("Nome utente o password errati: <br/> %s", $mysqli->error);
    header("Location: /INDEX.php");
    exit();
} else {
    ......
}

Intendi semplicemente questo?
 
PHP:
if ($result->num_rows == 0) {
    printf("Nome utente o password errati: <br/> %s", $mysqli->error);
    header("Location: /INDEX.php");
    exit();
} else {
    ......
}

Intendi semplicemente questo?

Una volta che
PHP:
$_SESSION['user_id'] = $record['id'];
è stata valorizzata al login non devi più ridefinirla nelle altre pagine, altrimenti rischi di creare una sessione che contiene dati confusi e questo potrebbe rendere instabile la tua applicazione.


Il tuo controllo diventa qualcosa di molto semplice da fare nelle pagine dove vuoi sia richiesta una sessione:
PHP:
<?php
session_start();

#> se $_SESSION['user_id'] non esiste o è vuoto, rimando l'utente ad index.php
if (empty($_SESSION['user_id'])) {
    header("Location: /INDEX.php");
    exit();
}

#> se arrivo fin qui l'utente è autenticato, procedo con lo script..
require_once 'connessione.php';
 
Allora io ho fatto una pagina chiamata protetta.php e l'ho inserita in un collegamento presente nella home.
Se faccio click su di essa senza loggarmi mi fà il refresh diciamo sulla home, anche se la richiamo da url fa la stessa cosa.. come faccio a vedere la pagina protetta?
 
Se fai il login setti la $_SESSION['user_id'] e quindi vedi la pagina altrimenti vieni reindirizzato alla index o all apagina di login dipende cosa hai impostato
 
Allora ricapitolando tutto vorrei che la mia pagina accedi.php rimandasse ad una pagina del sito e non ad un semplice echo su pagina bianca.
Se il login non avviene con successo rimanda alla index con la stampa nome e pwd errati, mentre se è andato a buon fine alla mia pagina protetta.php:
accedi.php
PHP:
if ($result->num_rows == 0) {
    header('Location:index.php');
    printf("Nome utente o password errati: <br/> %s", $mysqli->error);
    exit();
} else {
    session_start();
    $_SESSION['user_id'] = $record['id'];
    header('Location:protetta.php');
    echo "Utente loggato coretatmente!"; 
}

e questa è la pagina protetta.php:
PHP:
<html>
 <?php
session_start();

#> se $_SESSION['user_id'] non esiste o è vuoto, rimando l'utente ad index.php
if (empty($_SESSION['user_id'])) {
	header('Location:index.php');
   // echo "qualcosa non quadra!";
    exit();
}
echo 'ciao';
#> se arrivo fin qui l'utente è autenticato, procedo con lo script..
require_once 'connessione.php'; 
echo 'la pagina protetta';
?>
<head>
<title> Pagina protetta </title>
</head>
<body>
<h1> Questa è una pagina protetta </h1>
</body>
</html>

Se decommentavo // echo "qualcosa non quadra!"; e toglievo la riga dell header che portava all'index esce costantemente qualcosa non quadra, come se la sessione fosse sempre vuota..
Ringrazio tutti per l'aiuto che mi state dando, siete davvero gentilissimi.. spero di non chiedere troppo.
 
Per natura di funzionamento del protocollo http, gli header vanno inviati sempre prima di un qualsiasi altro output.
Inoltre è buona pratica inizializzare la sessione come prima istruzione dello script.

Di conseguenza ti suggerirei di operare queste modifiche:
PHP:
<?php
session_start();

#> controllo sessione valida
if (empty($_SESSION['user_id'])) {
    header('Location:index.php');
   // echo "qualcosa non quadra!";
    exit();
}


#> se arrivo fin qui l'utente è autenticato, procedo con lo script..
echo 'ciao';

require_once 'connessione.php'; 
echo 'la pagina protetta';

?><html>
<head>
<title> Pagina protetta </title>
</head>
<body>
<h1> Questa è una pagina protetta </h1>
</body>
</html>
 

Discussioni simili