Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    177

    sessioni non richiamata

    salve ragazzi buona domenica
    il problema che vi voglio porre che mi assilla da giorni e questo :
    una volta fatto il login in di un utente esce la scritta benvenuto utente pinco pallino sull'home page che sara la pagina login1.php xo non appena mi sposto da un altra pagina del sito mi esce la scritta nessun utente presente...come se andasse x la strada falsa pur avendo attivato in tutte le altre pagine del sito la session_start
    come fare vi posto la pagina
    login1.php
    codice:
    <?php
    include("ConnUtenti.php");
    session_start(); 
    header('Cache-Control: Private');
    $mail = $_POST['mail'];
    $password = $_POST['passi'];
    $nome = $_POST['nome'];
    $log = false;
    if(!$log){
    $insert = "SELECT * FROM tab WHERE mail = '$mail' AND pass = '$password'";
    $risultato =mysql_query($insert);
    $riga = mysql_num_rows($risultato);
    if($riga > 0){
    $log=true;
    while($row = mysql_fetch_array($risultato))
    {
    $_SESSION['user']=$row['mail']; 
    $_SESSION['id']=$row['id'];
    $_SESSION['nome']=$row['nome'];
    $_SESSION['cognome']=$row['cognome'];
    $_SESSION['pass']=$row['pass'];
    $_SESSION['pass2']=$row['pass2'];
    }
    }else{
    $Utente = "Nessun utente presente";
    }
    }
    }
    }
    ?>
    <HTML>
    <BODY>
    <div style=" position:absolute; left:54%; top:6%; z-index:2">
    <?
    
    if($log){ include ("ben.php");
     } 
    echo ($Utente);
    ?>
    </BODY></HTML>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    session_start();
    mettila sempre come prima istruzione ed assicurati che prima non ci siano spazi o ritorni a capo.
    Magari hai un problem di "header alredy sent", ma non lo vedi perché il livello dei "error_reporting" non è impostato al livello massimo.

    Ad ogni modo assicurati che error_reporting sia impostato su E_ALL|E_STRICT

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    177
    Alhazred
    session start e sempre messo come prima istruzione in tutte le pagine
    per quanto riguarda le altre cose che mi hai detto scusa , l'ignoranza ma non so dove mettere le mani se mi spieghi meglio come fare ti sarei davvero riconoscente

  4. #4
    Forse il problema è che hai aperto la sessione prima di fare la select sui dati: prova a mettere session_start dopo if su $riga.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    177
    nulla da fare marco...credimi non ho veramente idea di cosa possa essere sto da una settimana sempre sullo stesso punto
    penso di non aver sbagliato nulla dal punto di vista della sintassi altrimenti sarebbe uscito un errore ma dal punto di vista logico sussiste il problema

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Scusa, ma hai problemi sulle altre pagine che non "mantengono" la sessione o su login1.php che non trova l'utente se la richiami (da link/GET)?
    Nel primo caso dovresti postare il codice di una di queste pagine, nel secondo per come hai scritto il codice è ovvio che ti stampa utente non trovato (mi stupirei del contrario )

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Originariamente inviato da gian21
    Alhazred
    session start e sempre messo come prima istruzione in tutte le pagine [...]
    Non mi pare perché nel codice che hai postato c'è
    codice:
    <?php
    include("ConnUtenti.php");
    session_start(); 
    ...
    session_start() non è la prima istruzione

    Per quanto riguarda error_reporting, apri il file php.ini, trova la riga con scritto error_reporting ed assicurati che sia così
    error_reporting = E_ALL | E_STRICT

    se non c'è questa riga (ma ci sarà sicuramente) aggiungila a mano, quindi riavvia il server.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    177
    Alhazred per rispondere a te purtroppo non so dove andare su php.ini perche io sto lavorando su aruba e nn so qui dove si trovi il file php.ini

    Boots: il problema e questo il fatto che le altre pagine non mi mantengono la sessione adesso ti posto il codice
    codice:
    <?
    session_start();
    ?>
    <html>
    <head>
     <title>Homepage</title>
     </head>
    
    <style type="text/css">
    div #ris {
    width: 310px;
    margin: 0 auto;
    }
    
    div #ris1 {
    width: 900px;
    margin: 0 auto;
    }
    
    </style>
      <div id="wrapper">
    	<div id="header">
    				  </div>
    	<div id="menu">
    	
    <?
    include ("login1.php");
    include ("oscura.php");
    include ("barra.php");
    ?>
    </html>
    quando nn si logga nessuno ok esce nessun utente presente ma quando faccio loggare qualcuno e si trova quindi in login1.php esce il suo nome...ma non appena cambio pagina e vado in questa pagina ad esempio mi esce nessun utente presente

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Si, ma dovresti mostrare il codice dove leggi i dati in sessione, il codice che hai postato non dice niente sul tuo problema.

    Per il php.ini non puoi fare niente, pensavo fossi ancora in locale, quello del server online non lo puoi toccare, ma puoi comunque impostarlo come vuoi con l'istruzione

    error_reporting(E_ALL | E_STRICT);

    da mettere all'inizio dello script.

  10. #10
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Spero di aver capito male, ma mi sembra che stai facendo un gran casino

    Se includi su ogni pagina quel login.php mi pare normale che poi non ti trova l'utente:
    Quando ti sposti (presumo con un link) $_POST non è più popolata (mica rifai il login per ogni pagina, no?), quindi $mail & $passi sono nulle (dovresti avere un warning che l'indice di $_POST non esiste). Quindi vai a fare la query, che ovviamente non trova nessun utente con mail & pass nulli.

    Nelle tue pagine, dove richiesto, dovresti solo controllare se in sessione ci sono i dati utenti.

    Codice PHP:
    session_start();

    if(isset(
    $_SESSION['user'])){
        
    $log true;
        
    // L'utente è loggato
    }
    ...

    if(
    $log){
        echo 
    "Benvenuto "$_SESSION['nome'];
    }else{
        echo 
    "Benvenuto anonimo";

    La query per il login andrebbe fatta in un file a parte e richiamata solo per il POST delle credenziali, non in ogni file.

    PS: infine c'è un grande errore:
    Nelle altre pagine hai messo

    Codice PHP:
    <?
    session_start
    ();
    ?>
    <html>
    ...
    include ("login1.php");
    include ("oscura.php");
    include ("barra.php");
    ?>
    </html>
    Ma il tag html si trova anche in login1.php (dove,tra l'altro, chiudi anche il body) e quindi crei un documento molto fuori standard!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.