Visualizzazione risultati 1 fino 2 di 2

Discussione: Errore banale con le sessioni: aiuto!

  1. #1
    Guest

    Predefinito Errore banale con le sessioni: aiuto!

    Salve, ho questa pagina:

    Codice PHP:
    <li class="selected"><a href="index.php">Home</a></li>
    <li><a href="index.php?view=articoli">Articoli</a></li>
    <li><a href="http://www.freewebsitetemplates.com">Fotografie</a></li>
    <li><a href="http://www.freewebsitetemplates.com">Diari</a></li>
    <li><a href="http://www.freewebsitetemplates.com">Viaggi & Miraggi</a></li>
    <li><a href="http://www.freewebsitetemplates.com">Destinazioni</a></li>
    <li class="last"><a href="http://www.freewebsitetemplates.com">Le vostre segnalazioni</a></li>
    <div id="body">
    <div id="body-top">
    <div id="body-bot">
    <a href="index.php?view=chisiamo">CHI SIAMO</a> | <a href="index.php?view=contatti">CONTATTI</a> |
    <?php
    session_start
    (); //Apro la sessione
    if($_SESSION['login'] == 1){
    echo
    '<a href="index.php?view=loguot">LOGOUT</a>';
    }
    else if(
    $_SESSION['login'] == 1){
    echo
    '<a href="index.php?view=loguot">LOGOUT</a>';
    }
    else {
    echo
    '<a href="index.php?view=login">ACCEDI</a> | <a href="index.php?view=registration">REGISTRATI</a>';
    }
    ?>
    <br>
    <br>
    <br>
    <?php
    switch($_GET['view']) {
    case
    'articoli':
    include (
    "INCLUDE/view.php");
    echo
    '<br><br><br><br><a href="index.php?view=new"><h3>Clicca qui</a> per postare un nuovo articolo!</h3>';
    break;
    case
    'registration':
    include (
    "INCLUDE/registration.php");
    break;
    case
    'new':
    include (
    "INCLUDE/autentificazione.php");
    include (
    "INCLUDE/insert.php");
    break;
    case
    'add':
    include (
    "INCLUDE/save.php");
    break;
    case
    'regok':
    include (
    "INCLUDE/registra.php");
    break;
    case
    'chisiamo':
    echo
    "Pagina non disponibile";
    echo
    "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>";
    break;
    case
    'contatti':
    echo
    "Pagina non disponibile";
    echo
    "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>";
    break;
    case
    "login":
    include (
    "INCLUDE/login.php");
    break;
    case
    "loginsuccess":
    include (
    "INCLUDE/entra.php");
    break;
    case
    "logout":
    include (
    "INCLUDE/logout.php");
    break;
    default:
    ?>

    <table width="101%" border="0">
    <tr>
    <td><img src="http://forum.it.altervista.org/images/viaggi.jpg" width="200" height="150" alt="Immagine" class="left" /></td>
    <td><h2>&nbsp;</h2>
    <h2>&nbsp;</h2>
    <h2><strong>Articoli</strong></h2>
    <p>Avete Fatto un viaggio da sogno e lo volete raccontare a tutta la comunit&agrave;? </p>
    <p>Cosa aspettate ad entrare in questa sezione e descrivercelo in ogni minimo dettaglio?</p>
    <p>&nbsp;</p></td>
    <td>&nbsp;</td>
    </tr>
    Verso la riga 12 del codice ho aperto una sessione e ho detto che soltanto se il valore della sessione "login" era o 0 o 1 visualizzava la scritta logout, al contrario, se non era settata, visualizzava "ACCEDI" e "REGSITRATI", ma qualcosa non vā, dal momento che visualizza sempre la scritta LOGOUT.

    Il mio file di login č questo:

    Codice PHP:
    <?php
    require 'config.inc.php';
    require
    'connect.php';

    // Nome utente e password inviate attraverso il form
    $username=$_POST['username'];
    $password=$_POST['password'];
    $sql="SELECT * FROM utenti WHERE Username='$username' and password='$password'";
    $result=mysql_query($sql);
    // Mysql_num_row is counting table row
    $count=mysql_num_rows($result);
    $row = mysql_fetch_assoc($result);
    // If result matched $username and $password, table row must be 1 row
    if($count==1){
    // Register $username, $password and redirect to file "login_success.php"
    session_start(); //Apro la sessione
    $_SESSION['username'] = $username;
    $_SESSION['login'] = 0;
    if (
    $row['Admin'] == 1) {
    $_SESSION['login'] = '1';
    }
    header("location:../index.php");
    }
    else {
    echo
    "Attenzione: username o password errati";
    }
    ?>
    E quello di logout dice session_destroy e reindirizza alla home.

    Perchč qnche quando tento il logout la scritta che continua a comparirmi č LOGOUT?

    Grazie in anticipo!
    Ultima modifica di enkantar : 01-04-2010 alle ore 09.50.17

  2. #2
    Guest

    Lightbulb

    Non saprei proprio...
    Inizia correggendo questa parte di codice:
    Codice PHP:
    <?php
    session_start
    (); //Apro la sessione
    if($_SESSION['login'] == 1){
    echo
    '<a href="index.php?view=loguot">LOGOUT</a>';
    }
    else if(
    $_SESSION['login'] == 1){
    echo
    '<a href="index.php?view=loguot">LOGOUT</a>';
    }
    else {
    echo
    '<a href="index.php?view=login">ACCEDI</a> | <a href="index.php?view=registration">REGISTRATI</a>';
    }
    ?>
    In pratica dice:
    Codice:
    Se č stato effettuato il login visualizza il logout.
    Se NON č stato effetuato il login ma č stato effettuato il login visualizza il logout.
    Se NON č stato effettuato il Login e NON č stato effettuato il login visualizza ecc...
    Che ovviamente non ha senso...
    Dovrebbe quindi essere cosė:
    Codice PHP:
    <?php
    session_start
    (); //Apro la sessione
    if($_SESSION['login'] == 1){
    echo
    '<a href="index.php?view=loguot">LOGOUT</a>';
    }
    else {
    echo
    '<a href="index.php?view=login">ACCEDI</a> | <a href="index.php?view=registration">REGISTRATI</a>';
    }
    ?>
    Non penso che comunque il problema sia questo...
    Prova a:
    -spostare la funzione session_start() alla prima riga di codice (prima anche di qualunque codice html)
    -Rendere visibili tutti gli errori, inserendo la funzione error_reporting(E_ALL);, come prima riga, subito dopo session_start();
    -scrivere, in una qualunque parte del codice: echo '"'.$_SESSION['login'].'"'; per verificare che a sessione sia stata settata correttamente.

    Fammi sapere!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •