Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    errore mysql, setcookie, header

    Ciao a tutti, sto facendo un gioco molto semplice ma ho degli errori che non capisco, per la registrazione uso Facebook, cliccando nel link in homepage (che compare solo se non viene trovato il cookie id), si fa la procedura di Facebook che poi riporta nella mia pagina php dove memorizzo i dati degli utenti e faccio il login, poi faccio una redirect in home page con il cookie contente l'id. Ho poi un errore con mysql.

    Il codice è questo:

    Codice PHP:
    if($query3 $mysqli -> query("SELECT * FROM utenti WHERE uid='$uid'")) { /* Riga 39 */    
    $row1 $query3 -> fetch_object(); /* Riga 40 */    
    setcookie("id"$row1 -> idtime()+31536000); /* Riga 41 */   
     
    header("location: /"); /* Riga 42 */
    } else { /* Riga 43 */   
     
    echo $mysqli -> error/* Riga 44 */
    /* Riga 45 */ 
    Gli errori php sono questi:
    codice:
    Notice: Trying to get property of non-object in /Users/Edoardo/Desktop/programmazione/il quiz/www/ajax/reg_fb.php on line 41
    Warning: Cannot modify header information - headers already sent by (output started at /Users/Edoardo/Desktop/programmazione/il quiz/www/ajax/reg_fb.php:41) in /Users/Edoardo/Desktop/programmazione/il quiz/www/ajax/reg_fb.php on line 41
    
    Warning: Cannot modify header information - headers already sent by (output started at /Users/Edoardo/Desktop/programmazione/il quiz/www/ajax/reg_fb.php:41) in /Users/Edoardo/Desktop/programmazione/il quiz/www/ajax/reg_fb.php on line 42
    Vi ringrazio in anticipo
    Ultima modifica di 98edoardo; 05-03-2014 a 22:34

  2. #2
    Utente di HTML.it L'avatar di Webmaster76
    Registrato dal
    Mar 2001
    residenza
    Torino
    Messaggi
    298
    codice:
    Notice: Trying to get property of non-object in /Users/Edoardo/Desktop/programmazione/il quiz/www/ajax/reg_fb.php on line 41
    Questo ti dice che non c'è la proprietà $row1->id quindi probailmemte o $row1 non è un oggetto (quindi l'errore è a monte) o non esiste la proprietà (quindi il campo è errato).

    codice:
    Warning: Cannot modify header information - headers already sent by (output started at /Users/Edoardo/Desktop/programmazione/il quiz/www/ajax/reg_fb.php:41) in /Users/Edoardo/Desktop/programmazione/il quiz/www/ajax/reg_fb.php on line 41
    
    Warning: Cannot modify header information - headers already sent by (output started at /Users/Edoardo/Desktop/programmazione/il quiz/www/ajax/reg_fb.php:41) in /Users/Edoardo/Desktop/programmazione/il quiz/www/ajax/reg_fb.php on line 42
    Questi 2 sono conseguenza del primo. Semplicemente essendoci un errore stampato e quindi gli header già inviati non può settare cookie o fare redirect.

  3. #3
    ti ringrazio mi è bastato utilizzarlo come un array... ma ora ho un'altro problema, mysql i_num_rows restituisce 0 anche quando c'è uno o più record nel database...

    Codice PHP:
    $graph $facebook -> api('/me','GET');                       
    $firstname $graph['first_name'];           
    $lastname $graph['last_name'];          
    $mail $graph['email'];            
    $uid $graph['id'];            
    $birthday strtotime($graph['birthday']);            
    $fb_profile $graph['link'];            
    $username $graph['username'];            
    $username_verified 0;            
    $register_date time();           
                
     if(
    $query $mysqli -> query("SELECT * FROM utenti WHERE uid='$uid'")) {                
    if(
    mysqli_num_rows($query) == 0) {                    
    echo 
    mysqli_num_rows($query);                   
     if(
    $query2 $mysqli -> query("INSERT INTO utenti (uid, nome, cognome, email, data, fb_profile, username, username_verified, data_reg) VALUES ('$uid', '$firstname', '$lastname', '$mail', '$birthday', '$fb_profile', '$username', '$username_verified', '$register_date')")) {                       
     if(
    $query3 $mysqli -> query("SELECT * FROM utenti WHERE uid='$uid'")) {                            
    $row1 $query3 -> fetch_array(MYSQLI_ASSOC);                            
    setcookie("id"$row1['id'], time()+31536000);                           
     
    //header("location: /");                        
    } else {                           
     echo 
    $mysqli -> error;                        
    }                    
    } else {                        
    echo 
    $mysqli -> error;                   
     }               
     } else {                   
     
    $row $query -> fetch_array(MYSQLI_ASSOC);                    
    setcookie("id"$row['id'], time()+31536000);                    
    header("location: /");                
    }            
    } else {                
    echo 
    $mysqli -> error;            


  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Il fatto che la query recuperi più record lo supponi o lo verifichi praticamente?
    Se mysqli_num_rows ti dice 0, vuol dire che ha trovato 0 record corrrispondenti alla tua query, non si sbaglia a contare.

    Stampa la query incriminata con un echo invece di eseguirla, poi fai copia/incolla su phpmyadmin e vedi cosa recupera.
    In caso non faccia ciò che ti aspetti, modifica la query in modo adeguato.

  5. #5
    non mi sono spiegato bene: in phpmyadmin mi trovo più account, perché mysqli_num_rows() restituisce sempre 0, anche quando un account esiste già

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Hai stampato a video la query?
    Hai verificato che sia generata correttamente come ti aspetti?
    Ne hai fatto il copia/incolla in phpmyadmin per vedere se recupera i dati che ti aspetti?

    Fa queste cose, ma falle davvero, non dare MAI per scontato qualcosa, verifica sempre!
    Altrimenti finisce che parliamo di niente e non si arriva alla soluzione.

  7. #7
    La query in phpmyadmin funziona alla perfezione, fa tutto quello che deve fare

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Hai preso quella generata dal tuo codice PHP o l'hai scritta tu secondo ciò che pensi che il tuo codice generi? E' importante questa cosa.

    Ad ogni modo, ho notato che usi indiscriminatamente la versione procedurale ( mysqli_num_rows() ) e quella object oriented ( $mysqli -> query(...) ) di mysqli_, o usi sempre una o usi sempre l'altra.

  9. #9
    ho scritto quello che dovrebbe fare php... come faccio a far stampare la query? converto in object oriented

  10. #10
    Ho trovato il problema, $uid (l'id utente di facebook) è diverso nel database, ma non so perché, la variabile utilizzata è la stessa

    Edit: risolto, usavo nel database per memorizzare l'id Facebook un INT(11), troppo piccolo rispetto all'id, ho risolto usando un VARCHAR(50)
    Ultima modifica di 98edoardo; 06-03-2014 a 21:41

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.