Visualizzazione risultati 1 fino 16 di 16

Discussione: rendere pagine accessibili solo se registrati e loggati?

  1. #1
    naturewildlife non è connesso Utente giovane
    Data registrazione
    14-08-2010
    Messaggi
    34

    Predefinito rendere pagine accessibili solo se registrati e loggati?

    ciao a tutti!
    vorrei rendere alcune pagine nel mio sito accessibili soltanto se si è registrati e quindi loggati in modo che se un utente non registrato o loggato appaia un alert con scritto "devi essere registrato e loggato per accedere al contenuto di questa pagina"...
    come faccio?

  2. #2
    L'avatar di greenweb
    greenweb non è connesso Utente giovane
    Data registrazione
    07-03-2005
    Messaggi
    39

    Predefinito

    puoi usare le sessioni di php

    $_SESSION

    ciao

  3. #3
    naturewildlife non è connesso Utente giovane
    Data registrazione
    14-08-2010
    Messaggi
    34

    Question negare accesso ad utente non loggato?

    ciao a tutti!
    scusate se sbaglio a postare in questa sezione...
    tempo fa ho creato un topic simile, vorrei sapere come fare una cosa del genere http://gianlucaweb.altervista.org/galleria/index.php (esempio dal sito Gianlucaweb) cioè negare l'accesso ad un utente del mio sito se non è loggato, come si fa??

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

    Predefinito

    Dipende come hai fatto il sistema del login.

    Usualmente, per loggarsi si salva qualcosa (il nick o altro) sulle sessioni. Mettiamo caso per esempio che salvi il nome nell'array delle sessioni all'indice "nome".. allora sarà sufficiente fare un controllo del tipo:

    Codice PHP:
    <?php
    session_start
    ();
    if(isset(
    $_SESSION['nome']))
    {
    //sorgente in caso che il visitatore sia loggato
    echo '<html><head><title>pagina visibil esolo a loggati...</title etc etc...';
    }
    else
    {
    //sorgente in caso che il visitatore non è loggato
    echo 'Non puoi vedere questa pagina';
    }
    ?>
    Ciao!
    Ultima modifica di alemoppo : 17-12-2010 alle ore 20.34.48 Motivo: avevo fatto il contrario xD

  5. #5
    naturewildlife non è connesso Utente giovane
    Data registrazione
    14-08-2010
    Messaggi
    34

    Predefinito

    ciao alemoppo!!grazie mille per il tempo che mi hai dedicato rispondendo!
    il codice che mi hai scritto dove lo devo inserire?? guardando il tuo sito ho visto che alcuni link xesempio battaglia navale o labirinto per accedere e giocare bisogna essere loggati, ecco io vorrei una cosa del genere come da te!!rendere un link,collegato alla pagina web riservata agli utenti loggati, che per accedervi bisogna essere loggati se non lo sono deve apparire un alert, in poche parole come nel tuo sito!!comunque il mio login è strutturato cosi:
    Codice PHP:
    <HTML>
    <
    HEAD>
    <
    META NAME="GENERATOR" Content="AlterVista - Editor HTML">
    <
    TITLE></TITLE>
    <
    style>
    /* usiamo @import prima di ogni altra classe */
    @import url('stile.css');
    /*impostiamo la classe */
    .campiform {
    width: 55mm;
    font-family: verdana, tahoma, arial;
    color: red;
    font-size: 10px;
    }
    </
    style>
    </
    HEAD>
    <
    BODY>
    <
    form name="form1" method="post" action="checklogin.php">
    <
    table border="1" bordercolor="#D2FFBF" style="background-color:#D2FFBF" width="248" cellpadding="0" cellspacing="0">
    <
    tr>
    <
    td><font face="arial" size="2" color="#246209">Username</font></td>
    <
    td><input name="myusername" type="text" size="11px" style="color: rgb(43, 43, 43)" id="myusername"></td>
    <
    td><input type="checkbox" name="cookieuser" value="1" tabindex="103" title="ricorda i tuoi dati" id="cb_cookieuser_navbar" accesskey="c"><font face="arial" size="2" color="#246209">ricordami</font></td>
    </
    tr>
    <
    tr>
    <
    td><font face="arial" size="2" color="#246209">Password</font></td>
    <
    td><input name="mypassword" type="password" size="11px" style="color: rgb(43, 43, 43)" id="mypassword""></td>
    <td><input type="
    submit" name="Submit" value="Accedi"></td>
    </tr>
    </table>
    </form>
    </tr>
    </table>
    </BODY>
    </HTML>
    e il file php checklogin:
    Codice PHP:
    <?php
    $host
    ="localhost"; // Host name
    $username="naturewildlife"; // Mysql username
    $password="***********"; // Mysql password
    $db_name="my_naturewildlife"; // Database name
    $tbl_name="members"; // Table name

    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");

    // username and password sent from form
    $myusername=$_POST['myusername'];
    $mypassword=$_POST['mypassword'];

    // To protect MySQL injection (more detail about MySQL injection)
    $myusername = stripslashes($myusername);
    $mypassword = stripslashes($mypassword);
    $myusername = mysql_real_escape_string($myusername);
    $mypassword = mysql_real_escape_string($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
    '<center><font size="5">Username o password errati o non inseriti.rieffettua il login!</font></center>';
    }
    ?>
    <br>
    <center><INPUT TYPE="BUTTON" VALUE="← TORNA INDIETRO"
    ONCLICK="history.go(-1)"></center>
    Ultima modifica di naturewildlife : 17-12-2010 alle ore 20.18.50

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

    Predefinito

    Bene.

    Nelle pagine "private" devi mettere il codice che ho scritto sopra, modificando "nome" in "myusername":

    Codice PHP:
    <?php
    session_start
    ();
    if(isset(
    $_SESSION['myusername']) && (strlen($_SESSION['myusername'])>0))
    {
    //sorgente in caso che il visitatore sia loggato
    echo '<html><head><title>pagina visibil esolo a loggati...</title etc etc...';

    }
    else
    {
    //sorgente in caso che il visitatore non è loggato
    echo 'Non puoi vedere questa pagina';
    }
    ?>
    Cosa non hai capito?.. prova a fare una pagina come questa e prova ad accederci da loggato o da non.. fammi sapere

    Ciao!

    EDIT:

    Attenzione: ho editato perché prima dava errore se eri loggato e viceversa :mgreen:
    Ultima modifica di alemoppo : 17-12-2010 alle ore 20.34.25 Motivo: avevo fatto il contrario xD

  7. #7
    naturewildlife non è connesso Utente giovane
    Data registrazione
    14-08-2010
    Messaggi
    34

    Predefinito

    ciao alemoppo!
    dove c'è la riga echo '<html><head><title>pagina visibil esolo a loggati...</title etc etc...'; devo mettere tutto il codice html della pagina che voglio rendere protetta?
    grazie ancora!

  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 naturewildlife Visualizza messaggio
    ciao alemoppo!
    dove c'è la riga echo '<html><head><title>pagina visibil esolo a loggati...</title etc etc...'; devo mettere tutto il codice html della pagina che voglio rendere protetta?
    grazie ancora!
    Sì.. ma puoi metterci anche altri comandi; non solo echo...

    -----

    Così come è, se però la pagina contiene il carattere ' , avrai dei problemi.
    Ecco alcune soluzioni:

    -->Soluzione più facile, ma non credo correttissima (anche se ricordo che funzionava...):
    Codice PHP:
    <?php
    session_start
    ();
    if(isset(
    $_SESSION['myusername']) && (strlen($_SESSION['myusername'])>0))
    {
    //sorgente in caso che il visitatore sia loggato
    ?>
    <html><head><title>pagina visibil esolo a loggati...</title etc etc...
    <?php
    }
    else
    {
    ?>
    Non puoi vedere questa pagina
    <?php
    }
    ?>

    -->Soluzione più corretta (tramite l'heredoc):
    Codice PHP:
    <?php
    session_start
    ();
    if(isset(
    $_SESSION['myusername']) && (strlen($_SESSION['myusername'])>0))
    {
    //sorgente in caso che il visitatore sia loggato
    echo <<<EOD
    <html><head><title>pagina visibil esolo a loggati...</title etc etc...
    EOD;
    }
    else
    {
    echo <<<EOD
    Non puoi vedere questa pagina
    EOD;
    }
    ?>

    Ciao!
    Ultima modifica di alemoppo : 18-12-2010 alle ore 17.59.00

  9. #9
    naturewildlife non è connesso Utente giovane
    Data registrazione
    14-08-2010
    Messaggi
    34

    Predefinito

    ciao sono sempre io
    il codice funziona ma non del tutto correttamente, infatti anche quando faccio il login e mi dirigo alla pagina mi appare "non puoi visualizzare questa pagina"...non vorrei fosse il mio modulo login con qualche errore
    Ultima modifica di naturewildlife : 18-12-2010 alle ore 19.18.09

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

    Predefinito

    ma il nick è più lungo di un carattere?

    (se si):

    proviamo cosa restituisce questa pagina:

    Codice PHP:
    <?php
    session_start
    ();
    echo
    $_SESSION['myusername'];
    ?>
    ..dovrebbe restituire un warning se non sei loggato, altrimenti il contenuto della variabile di sessione...

    Ciao!

  11. #11
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    Citazione Originalmente inviato da naturewildlife Visualizza messaggio
    e il file php checklogin:
    prova a mettere session_start() all'inizio del file, altrimenti le variabili non verranno mai registrate.

    ciao
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  12. #12
    naturewildlife non è connesso Utente giovane
    Data registrazione
    14-08-2010
    Messaggi
    34

    Predefinito

    per alemoppo: il codice che mi hai postato dove devo metterlo??

  13. #13
    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 naturewildlife Visualizza messaggio
    per alemoppo: il codice che mi hai postato dove devo metterlo??
    Una pagina a parte solo per fare un test...Vediamo cosa scrive...

    Comunque, come detto da Xsescott aggiungi come prima (in realtà seconda) riga il session_start() nel file checklogin... non so se ci va perché io non uso la session_register.. però credo che ci vada ugualmente...

    Ciao!

    ---

    Mi sembra funzioni, no?...

    ..ovviamente a te funziona sempre perché sei rimasto loggato...

    Dovresti mettere un pulsante per il logout che manda a questa pagina:

    Codice PHP:
    <?php
    session_start
    ();
    session_destroy();
    header('Location: #pagina che vuoi#');
    ?>
    Ciao!
    Ultima modifica di alemoppo : 19-12-2010 alle ore 13.57.44 Motivo: causa cencellazione post sotto...

  14. #14
    naturewildlife non è connesso Utente giovane
    Data registrazione
    14-08-2010
    Messaggi
    34

    Predefinito

    ho trovato la soluzione al mio problema, volevo ringraziare tutti quelli che mi hanno aiutato, alemoppo mi sei stato di grandissimo aiuto!!grazie veramente!
    ciao a tutti

  15. #15
    Guest

    Predefinito

    Ciao a tutti. Anche io vorrei creare questa pagina, ma non riesco a capire come si fa a fare in modo che un utente si registri al sito. Ho visto i file ma vedo che hanno un server che registra.
    In poche parole vorrei che mi diceste esattamente cosa devo fare per fare in modo che gli utenti si registrino al mio sito...

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

    Predefinito

    È necessario registrare i dati su server. Altrimenti i vari account (nick+password+eventuali altre info), dove le salvi?
    L'utente sopra aveva utilizzato il database MYSQL su altervista...

    Quindi, prima di avviarti a fare uno script del genere, (se non lo conosci), dovresti imparare ad usare i database mysql, oppure sqlite...

    Poi fai una pagina che salva i vari utenti (di registrazione), una per il login etc etc...

    Se hai problemi fai un nuovo topic spiegando dettagliatamente il tuo problema e scrivendoci anche il sorgente che hai scritto, per correggere eventuali errori.

    Ciao!
    Ultima modifica di alemoppo : 05-05-2011 alle ore 19.56.26

Regole di scrittura

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