Visualizzazione risultati 1 fino 14 di 14

Discussione: PROBLEMA!: creare una pagina accessibile solo se loggati sul sito web

  1. #1
    Guest

    Predefinito PROBLEMA!: creare una pagina accessibile solo se loggati sul sito web

    io ho creato un sito web su altervista e ho creato un sistema di login e registrazione.
    Ho provato a fare un pagina accessibile solo se loggati ma quando sono loggato e provo ad accedere alla pagina protetta mi da il messaggio di errore!
    eccovi il codice PHP della pagina protetta:
    Codice PHP:
    <?php
    session_start
    ();
    if(isset(
    $_SESSION['myusername']) && (strlen($_SESSION['myusername'])>0))
    {
    //sorgente in caso che il visitatore sia loggato
    <php include('index.html')>
    }
    else
    {
    ?>
    Non puoi vedere questa pagina
    <?php
    }
    ?>

  2. #2
    Guest

    Predefinito

    Direi che l'errore sia:
    Codice PHP:
    include('index.html');

  3. #3
    Guest

    Predefinito

    ora ho modificato, ma non va lo stesso.
    Codice PHP:
    <?php
    session_start
    ();
    if(!
    session_is_registered(myusername)) {
    include(
    'login_index.html');
    } else {
    echo
    'Non sei loggato e non puoi visualizzare questa pagina!';
    }
    ?>
    Grazie in anticipo!!!
    Ultima modifica di HowCraft : 08-03-2014 alle ore 18.59.17

  4. #4
    Guest

    Predefinito

    Guarda che a me funziona:
    Codice PHP:
    <?php
    session_start
    ();
    if(isset(
    $_SESSION['myusername'])) {
    echo
    "Sei loggato!";
    } else {
    echo
    'Non sei loggato e non puoi visualizzare questa pagina!';
    }
    ?>
    Prova scrivendo l'include indicando la directory:
    Codice PHP:
    include("./login_index.html");

  5. #5
    Guest

    Predefinito

    Niente da fare non funziona. Forse ho sbagliato in qualche altra pagina, te le passo.
    index.html:
    Codice PHP:
    <!DOCTYPE html>
    <
    html>
    <
    head><title>Home</title>
    </
    head>
    <
    body>
    <
    form action="main_login.php"><input type="submit" value="Login"><br></form>
    <
    form action="Registrazione.php"><input type="submit" value="Registrazione"></form>
    </
    body>
    </
    html>
    login:
    Codice PHP:
    <HTML>
    <
    HEAD>
    <
    TITLE>Login</TITLE>
    </
    HEAD>
    <
    BODY>
    <
    table border="0" cellspacing="1" cellpadding="0" width="300" align="center" bgcolor="#cccccc"><tbody>
    <
    tr><form action="checklogin.php" method="post"> <input name="phpMyAdmin" type="hidden" value="V0N0db6Fl62QWr6eBkly75xAGn3" /><td>
    <
    table border="0" cellspacing="1" cellpadding="3" width="100%" bgcolor="#ffffff"><tbody>
    <
    tr>
    <
    td colspan="3"><strong>Member Login </strong></td>
    </
    tr>
    <
    tr>
    <
    td width="78">Username</td>
    <
    td width="6">:</td>
    <
    td width="294"><input id="myusername" name="myusername" type="text" /></td>
    </
    tr>
    <
    tr>
    <
    td>Password</td>
    <
    td>:</td>
    <
    td><input id="mypassword" name="mypassword" type="password" /></td>
    </
    tr>
    <
    tr>
    <
    td></td>
    <
    td></td>
    <
    td><input name="Submit" type="submit" value="Login" /></td>
    </
    tr>
    </
    tbody></table>
    </
    td>
    </
    form></tr>
    </
    tbody></table>
    </
    BODY>
    </
    HTML>
    checklogin: (lascio la password vuota per motivi di sicurezza)
    Codice PHP:
    <?php
    $host
    ="localhost"; // Hostname
    $username="howcraft"; // Mysql username
    $password=""; // Mysql password
    $db_name="my_howcraft"; //Nome del Database
    $tbl_name="members"; // Nome della Tabella
    // Procedimento per connettersi al Database
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");
    // Nome utente e password inviate attraverso il form
    $myusername=$_POST['myusername'];
    $mypassword=$_POST['mypassword'];
    $sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
    $result=mysql_query($sql);
    // Mysql_num_row is counting table row
    $count=mysql_num_rows($result);
    // If result matched $myusername and $mypassword, table row must be 1 row
    if($count==1){
    // Register $myusername, $mypassword and redirect to file "login_success.php"
    session_register("myusername");
    session_register("mypassword");
    header("location:login_success.php");
    }
    else {
    echo
    "Attenzione username o password errati";
    }
    ?>

  6. #6
    Guest

    Predefinito

    Ho dato un'occhiata veloce e devo dire che è progettato a mio avviso male ma comunque dov'è la session_start();?

  7. #7
    andreacivita non è connesso Neofita
    Data registrazione
    30-12-2013
    Messaggi
    17

    Predefinito

    prova con il myfetch array...questa istruzione al posto del $count=mysql_num_rows...;

    <?php
    $risulta=mysql_fetch_array($result);
    $us=$risulta["username"];
    $pass=$risulta["password"];

    if ( $us!=$username || $pass!=$password || !$risulta )
    {
    $titolo="Username o Password sbagliati ";
    }
    else
    {
    //apro la sessione
    session_start();
    $_SESSION['username']=$us;
    }
    ?>

    ti consiglio di usare tutto questo codice al posto di

    //no
    $count=mysql_num_rows($result);
    // If result matched $myusername and $mypassword, table row must be 1 row
    if($count==1){
    // Register $myusername, $mypassword and redirect to file "login_success.php"
    session_register("myusername");
    session_register("mypassword");
    header("location:login_success.php");
    }
    else {
    echo "Attenzione username o password errati";
    }

    prova e poi fammi sapere :D

  8. #8
    Guest

    Predefinito

    Grazie andreacivita.Ora il codice è:
    Codice PHP:

    <?php
    $risulta
    =mysql_fetch_array($result);
    $us=$risulta["username"];
    $pass=$risulta["password"];

    if (
    $us!=$username || $pass!=$password || !$risulta )
    {
    $titolo="Username o Password sbagliati ";
    }
    else
    {
    //apro la sessione
    session_start();
    $_SESSION['username']=$us;
    }
    ?>
    Ma non funziona il checklogin!
    Siccome sono un principiante con il php, volevo chiedere: Una volta fatto il login e il checklogin ha confermato, per essere reindirizzato alla pagina protetta, va bene se modifico cosi? E cosa significa
    Codice PHP:
    $_SESSION['username']=$us;
    ?
    Codice PHP:
    <?php
    $risulta
    =mysql_fetch_array($result);
    $us=$risulta["username"];
    $pass=$risulta["password"];

    if (
    $us!=$username || $pass!=$password || !$risulta )
    {
    $titolo="Username o Password sbagliati ";
    }
    else
    {
    //apro la sessione
    session_start();
    $_SESSION['username']=$us;
    include
    'login_index.html';
    }
    ?>
    e per creare una pagina di logout è giusto cosi il codice?
    Codice PHP:
    if(isset($_SESSION['login'])){
    session_destroy();
    }
    ?>
    Ultima modifica di HowCraft : 09-03-2014 alle ore 12.44.13

  9. #9
    Guest

    Predefinito

    Cmq creo di aver trovato il problema:
    il check login non memorizza le informazioni! Come risolvo?

  10. #10
    Guest

    Predefinito

    Prima di tutto quando lavori con le sessioni:
    Codice PHP:
    session_start();
    Deve essere messo prima di ogni tipo di output quindi all'inizio della pagina.

    Quello che hai scritto:
    Codice PHP:
    $_SESSION['username']=$us;
    Significa che nel valore username della tua sessione passi il contenuto della variabile $us.

    PS: Io consiglierei di usare la più aggiornata estensione mysqli.

  11. #11
    Guest

    Predefinito

    GRAZIE MATHIS PER LA PAZIENZA CHE MI STAI DEDICANDO
    Bene, ora ho cambiato il checklogin e funziona.
    Però non capisco perche la pagina login_secces.php non mi memorizza come utente loggato!
    prova visualizzare il mio sito e vedi se almeno tu riesci a loggare x bene:
    http://www.howcraft.altervista.org
    Ultima modifica di HowCraft : 09-03-2014 alle ore 13.36.17

  12. #12
    Guest

    Predefinito

    Quando mi registro mi redirecta alla pagina ./database.php che resta bianca.
    Quando faccio il login mi porta ad una pagina ./login_index.php dove mi dice che sono loggato.

    Dove sta il problema?

  13. #13
    Guest

    Predefinito

    ho risolto ora avevo scritto male il login_success.php, non avevo scritto sessione_start() all'inizio... Grazie per la pazienza!

  14. #14
    Guest

    Predefinito

    Di niente, è un piacere essere utile :)

Regole di scrittura

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