Visualizzazione risultati 1 fino 10 di 10

Discussione: Problema Sessioni

  1. #1
    gmmultimedia non è connesso Neofita
    Data registrazione
    23-06-2008
    Messaggi
    9

    Smile Problema Sessioni

    nella mia hompage ho messo:
    Codice PHP:
    <?php include('login.php') ?>
    Questa è la pagina login.php
    Codice PHP:
    <?php

    if (isset($_SESSION['logged']))
    {
    echo
    'bau';
    }
    else
    {
    echo
    '<body class="TestoNero"><form class="forms" name="login" method="POST" action="login2.php">
    Username:
    <input class="forms" type="text" name="username" >
    Password:
    <input class="forms" type="password" name="password">
    <input type="submit" value="Log-In">
    <a class="LinkBianchi" href="registrazione.php" title="Pagina di Registrazione utente">Registrati</a>
    </form></body>'
    ;
    }


    ?>
    e questa login2.php
    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    'config.php');
    $myusername=$_POST['username'];
    $mypassword=$_POST['password'];
    require_once(
    'dbconnect.php');
    $sql="SELECT * FROM x_utenti WHERE username='$myusername' and password='$mypassword'";
    $result=mysql_query($sql) or die('problemi query');
    $count=mysql_num_rows($result);
    if(
    $count==1){
    $myid = mysql_result($result,$count,'id');
    $_SESSION['username'] = $myusername;
    $_SESSION['uid'] = $myid;
    $_SESSION['logged'] = 1;
    echo
    "Benvenuto $myusername hai effettuato il login con successo".$myid;
    header('Refresh: 2; url='.$dir.'indox.php');
    }
    else{
    echo
    "login non riuscito".$count;
    }
    ?>
    Una volta loggati non si dovrebbe vedere più il form di login ma la parola "bau" invece quando, dopo il login, si viene reindirizzati alla pagina indox.php il form è ancora lì che si fa beffe di me a nulla vale aggiornare la pagina...se però apro il file indox.php dalla gestione file del pannello di controllo allora ecco che spunta bau...come è possibile? In una pagina di test dove mi spunta solo 1 o 0 a seconda se sono loggato basta aggiornare con f5 e il valore si aggiorna.

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Prima di
    Codice PHP:
    if (isset($_SESSION['logged']))
    Aggiungi la session_start().

    Va sempre messa, se usi le sessioni (anche solo in lettura).

    Ciao!

    EDIT:

    Inoltre, prima di usare i valori passati dal form ($_POST[]), dovresti verificarne l'esistenza, ad esempio con la isset().
    Ancora più importante, è la sicurezza: in quello script è possibile fare una sql_injection. Prima di usare i valori passati da $_POST[], dovresti "filtrarli" tramite la mysql_real_escape_string(). Altervista mi sembra abbia PHP in safe-mode, quindi i dati penso vengano filtrati "automaticamente", però è una buona abitudine metterlo; rischio, il deface del sito.

    Ciao!
    Ultima modifica di alemoppo : 12-04-2012 alle ore 00.33.03

  3. #3
    gmmultimedia non è connesso Neofita
    Data registrazione
    23-06-2008
    Messaggi
    9

    Predefinito

    Il session_start() l'ho messo mentre scrivevo il post ma continuava a non funzionare. Grazie per gli altri consigli li metterò senz'altro in pratica ma non compromettono il funzionamento dello script...quindi non capisco cosa non vada bene.

    EDIT:

    Potrebbe avere a che fare con la funzione header?

    edit: BINGO! Ho messo al posto dell'header un link "indietro" e ora funziona...mistero della fede
    Ultima modifica di alemoppo : 12-04-2012 alle ore 00.45.24 Motivo: Non fare post consecutivi: usa il tasto "Edita" per editare i messaggi.

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    La mysql_result() non la uso mai... Però nella documentazione c'é scritto che il secondo parametro parte da 0, mentre tu metti $count che vale 1. Forse quindi non lo trova e non riestituisce nulla (?). Comunque, anche questo non compromette il funzionamento: nella pagina controlli $_SESSION['logged'].
    Prova a controllare subito prima dell'if cosa vale $count (ad esempio con una echo)... perché se entra nell'if, dovrebbe funzionare. Quindi mi vien da pensare che non riesca ad entrare nell'if.

    Ciao!

    EDIT:

    Ho letto il tuo messaggio, anche se non ho capito bene, l'importante è che funziona

    Ciao!

  5. #5
    gmmultimedia non è connesso Neofita
    Data registrazione
    23-06-2008
    Messaggi
    9

    Predefinito

    Senza volerlo mi hai fatto accorgere di un altro errore! Hai ragione parte da 0 non da 1... per il resto non funzionava a causa della funzione header che dopo il login rimandava automaticamente alla home, appena ho tolto

    Codice PHP:
    header('Refresh: 2; url='.$dir.'indox.php');
    e ho messo

    Codice PHP:
    echo '<a href="indox.php"> Torna indietro</a>';
    ha funzionato...anche se non capisco perchè

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Prova a mettere:
    Codice PHP:
    header('Location: indox.php');
    ha funzionato...anche se non capisco perchè
    Forse perché usavi la variabile $dir che non è stata dichiarata.

    Ciao!
    Ultima modifica di alemoppo : 12-04-2012 alle ore 00.53.14

  7. #7
    gmmultimedia non è connesso Neofita
    Data registrazione
    23-06-2008
    Messaggi
    9

    Predefinito

    Funziona! Grazie mille. Ma c'è una spiegazione logica? xD

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Citazione Originalmente inviato da gmmultimedia Visualizza messaggio
    Funziona! Grazie mille. Ma c'è una spiegazione logica? xD
    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Forse perché usavi la variabile $dir che non è stata dichiarata.
    ..E, sincramente, non ho mai usato l'header come l'hai scritto (non dico che non funziona... dovrei provare). Io la uso nel modo che ti ho scritto.

    Ciao!
    Ultima modifica di alemoppo : 12-04-2012 alle ore 00.59.04

  9. #9
    gmmultimedia non è connesso Neofita
    Data registrazione
    23-06-2008
    Messaggi
    9

    Predefinito

    In quel modo rimanda a una pagina dopo tot secondi, in quel caso 2 secondi. Mentre la variabile $dir è dichiarata nel fil config.php che ho incluso con require_once

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Comunque, se devi fare il redirect a ./indox.php, perché mettere $dir? (che dovrebbe essere vuota, visto che con "'Location: indox.php'" funziona).

    Ciao!

Regole di scrittura

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