Visualizzazione risultati 1 fino 17 di 17

Discussione: Redirezione fra due pagine dopo login [era: Help!]

  1. #1
    Guest

    Unhappy Redirezione fra due pagine dopo login [era: Help!]

    Salve a tutti!

    ho problemuccio con php;

    io ho una finestra (A) che ne chiama un'altra (B)
    B dovrebbe solo funzionare come ''pagina di login'' infatti la mia intenzione sarebbe: fare in modo che A chiama B....le credenziali vengano inserite su B quando si preme il pulsante login B si chiude e tutto continua su A

    cosa succede invece??
    A chiama B....le credenziali vengono inserite su B....quando premo login la finestra non si chiude e il sito ''prosegue'' su B....
    come posso fare????
    ringrazio in anticipo tutti quelli k mi aiuteranno.....

    BUONE FESTE A TUTTI!

  2. #2
    Guest

    Predefinito

    Il codice della finestra B dovrebbe essere una cosa tipo:
    Codice:
    if // controlla se il login ha avuto successo (username e password corretti)
    {
      $_SESSION['utente'] = $utente; // conservi come session l'id dell'utente
      ?>
    
      // esci da php e usi HTML per scrivere il codice javascript
      <script>
        /* la prossima riga ricarica la finestra A, perché altrimenti rimarrebbe 
           com'era prima di aver fatto il login */
        self.opener.location.reload();  
        self.close();	// chiudo la popup (aka la finestra B)
      </script>
    
      <?  
    }

  3. #3
    Guest

    Predefinito

    ho provato con la tua soluzione ma non riesco a farla andare....

    questo è il codice della pagina ''di login'' (B)

    Codice PHP:
    <body

    <?
    session_start
    ();
    session_destroy();
    session_unset()
    ?>
    <center>
    <form name="inviadati" action="../cose_pubbliche/Interrogazione_db.php" method="post">
    <table width="30%" "border="0" align="center" class="tabella">

    <td align="center" valign="middle" class="categoria"><strong class="categoria">UTENTE:</strong></td>

    <tr>
    <td align="center" valign="middle"><input name="utente" type="text" class="celle_inserimento" id="textfield" /></td>
    </tr>
    <tr>
    <td align="center" valign="middle" class="categoria"><strong class="categoria">PASSWORD:</strong></td>
    </tr>
    <tr>
    <td align="center" valign="middle"><input name="pwd" type="password" class="celle_inserimento" /></td>
    </tr>
    <tr>
    <td align="center" valign="middle" class="categoria"><strong>SESSO:</strong></td>
    </tr>
    <tr>
    <td align="center" valign="middle"><select name="sesso" class="celle_inserimento" id="SESSO" >
    <option selected="selected"> </option>
    <option value="m">maschio</option>
    <option value="f">femmina</option>
    <option value="anonimo">anonimo</option>
    </select></td>
    </tr>
    <tr>
    <td align="center" valign="middle"><span class="nomi_dei_campi">
    <input name="inviate" type="submit" class="bottoni" value="LOGIN!" onClick=/></td>
    </tr>
    </table></form>
    <p>&nbsp;</p>
    </center>
    </body>
    </html>
    Ultima modifica di dreadnaut : 21-12-2012 alle ore 13.38.27 Motivo: + tag [php]

  4. #4
    Guest

    Predefinito

    Ok, non capisco perché crei una session per poi distruggerla subito. All'inizio dovrebbe essere solo
    Codice PHP:
    <?
    session_start
    ();
    ?>
    A questo punto il codice di Interrogazione_db.php dovrebbe diventare circa così:
    Codice PHP:
    <?
    session_start
    ();
    /* a questo punto prendi $_POST['utente'] e $_POST['pwd']
    e controlli che siano esatti (facendo una query al Database) */
    if($login_ok) // controllo se è tutto ok
    {
    /* qui metti il codice del mio post precedente, in cui $utente sarà
    l'id preso con la query */
    }
    else
    {
    echo
    'Errore: username o password sbagliati';
    }
    Non capisco nemmeno la select del sesso, siccome un login dovrebbe richiedere solo username e password, mentre il sesso e gli altri dati anagrafici dovresti richiederli al momento dell'iscrizione al tuo sito.
    Ultima modifica di dreadnaut : 21-12-2012 alle ore 13.38.10 Motivo: dreadnaut: + tag [php] | orgxiipu: Non mi ero accorto della action

  5. #5
    Guest

    Predefinito

    scusami sono un po' ''imbranato'' sto sfiluppando per la prima volta un sito e su tante cose sono ancora impedito perchè non le conosco
    mi potresti preparare il codice se ti dò anche il codice sorgente della pagina k fà la query sul db??

  6. #6
    Guest

    Predefinito

    Sì, certo.

  7. #7
    Guest

    Predefinito

    allora:

    interrogazione database:

    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>Interrogazione db</title>

    </head>



    <body>

    <?php

    // Connecting, selecting database
    session_start();
    $link = mysql_connect('localhost', '', '')

    or die(
    'Could not connect: ' . mysql_error());

    mysql_select_db('my_fabio1cgec') or die('Could not select database');

    // Performing SQL query

    $utente = $_POST['utente'];
    $pwd=$_POST['pwd'];
    $sesso=$_POST['sesso'];
    $query = "SELECT * FROM generale WHERE ID='".$utente."' AND PASSWORD='".$pwd."' AND SESSO='".$sesso."'";
    $result = mysql_query($query) or die('Query failed: ' . mysql_error());

    $num_rows = mysql_num_rows($result);



    if(
    $num_rows==0){
    //non ho trovato alcun utente con nome e pwd indicate rimando a pagina inizio

    header( 'Location: [url]http://fabio1cgec.altervista.org/nuove_creazioni/errore_di_login/menu_generale.php[/url]' ) ;
    }
    else{
    //qualcosa ho trovato inizializzo variabili di sessione e stabilisco la tipologia di utente che registro nella variabile $tipuser
    $_SESSION['id_utente']=$utente;
    $tipuser=mysql_result($result,0,'tipo');
    $_SESSION['tipo']=$tipuser;
    $_SESSION['sesso']=$sesso;
    };
    //il comando switch su una var consente di eseguire un blocco istruzioni a seconda del valore della variabile
    switch ($tipuser) {
    case
    "G":
    //rimando al link per docenti
    header( 'Location: [url]http://fabio1cgec.altervista.org/nuove_creazioni/cose_per_studenti_e_genitori/la_2Cgec.php[/url]' ) ;
    break;
    case
    "D":
    //rimando al link per docenti
    header( 'Location: [url]http://fabio1cgec.altervista.org/nuove_creazioni/cose_per_prof/la_2Cgec.php[/url]' ) ;
    break;
    case
    "S":
    //rimando al link per studenti
    header( 'Location: [url]http://fabio1cgec.altervista.org/nuove_creazioni/cose_per_studenti/la_2Cgec.php[/url]' ) ;
    break;
    case
    "A":
    //rimando al link per studenti
    header( 'Location: [url]http://fabio1cgec.altervista.org/nuove_creazioni/cose_per_tutto/menu_generale.php[/url]' ) ;
    break;
    default:
    //rimando al link per tutti quelli che non rientrano nei casi precedenti
    header( 'Location: [url]http://fabio1cgec.altervista.org/nuove_creazioni/errore_di_login/menu_generale.php[/url]' ) ;
    break;
    };
    // Free resultset
    mysql_free_result($result);
    // Closing connection
    mysql_close($link);
    ?>
    </body>

    </html>

    PAGINA ''B''
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    <style type="text/css">
    </style>
    <link href="../css/cose_pubbliche/pagina_login_piccola.css" rel="stylesheet" type="text/css">
    <style type="text/css">
    body {
    background-image: url(../immagini_per_sito/Sfondo-per-cellulari-3.jpg);
    background-repeat: no-repeat;
    location: no;
    scrollbar: no;
    }
    </style>
    </head>

    <body

    <?
    session_start
    ();
    session_destroy();
    session_unset()
    ?>
    <center>
    <form name="inviadati" action="../cose_pubbliche/Interrogazione_db.php" method="post">
    <table width="30%" "border="0" align="center" class="tabella">

    <td align="center" valign="middle" class="categoria"><strong class="categoria">UTENTE:</strong></td>

    <tr>
    <td align="center" valign="middle"><input name="utente" type="text" class="celle_inserimento" id="textfield" /></td>
    </tr>
    <tr>
    <td align="center" valign="middle" class="categoria"><strong class="categoria">PASSWORD:</strong></td>
    </tr>
    <tr>
    <td align="center" valign="middle"><input name="pwd" type="password" class="celle_inserimento" /></td>
    </tr>
    <tr>
    <td align="center" valign="middle" class="categoria"><strong>SESSO:</strong></td>
    </tr>
    <tr>
    <td align="center" valign="middle"><select name="sesso" class="celle_inserimento" id="SESSO" >
    <option selected="selected"> </option>
    <option value="m">maschio</option>
    <option value="f">femmina</option>
    <option value="anonimo">anonimo</option>
    </select></td>
    </tr>
    <tr>
    <td align="center" valign="middle"><span class="nomi_dei_campi">
    <input name="inviate" type="submit" class="bottoni" value="LOGIN!" onClick=/></td>
    </tr>
    </table></form>
    <p>&nbsp;</p>
    </center>
    </body>
    </html>
    PAGINA CHIAMANTE ''A''
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <
    html xmlns="http://www.w3.org/1999/xhtml">

    <
    head>

    <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <
    title>Pagina di login</title>


    </
    style>

    <
    link href="../css/cose_pubbliche/reindirizzamenti_per_login.css" rel="stylesheet" type="text/css">
    <
    style type="text/css">
    </
    style>
    </
    head>

    <
    body bgcolor="#000000" style="background-image:url(../../../../1%C2%B0Cgec/wallpap2.jpg); background-attachment: fixed; background-position: 100% 0%; background-repeat: no-repeat; " >

    <
    table width="100%" height="747" border="0" cellspacing="0" cellpadding="0">

    <
    tr>

    <
    td width="40%" height="100%" align="center" valign="middle"><p><span class="Stile2"><span class="titolo">BENVENUTO!!</span><span class="Stile6"><br />

    </
    span></span><span class="testo">SE POSSIEDI LA PASSWORD</span></p>

    <
    p class="testo">PER ACCEDERE</p>

    <
    p class="testo">AL SITO COMPLETO, </p>

    <
    p class="collegamenti"><INPUT name="EFFETTUA LOGIN" type="button" class="bottoni" id="EFFETTUA LOGIN" onClick="window.open('pagina_login_piccola.php','Pagina di login','width =360px, height=560px,location = no,scrollbar = no')" value="EFFETTUA IL LOGIN"></p>

    <
    p class="testo">ALTRIMENTI </p>

    <
    p class="testo">VAI AL MENU' GENERALE</p>
    <p>
    <a href="menu_generale.php"><INPUT name="vai al menù generale" type='
    submit' class="bottoni" id="vai al menù generale" value="PARTE LIBERA" /></a>
    </p>
    <p class="testo">per ottenere l'
    Username e la Password manda una mail al seguente indirizzo</p>

    <
    p class="testo">SCRIVENDO IL TUO NOME, COGNOME E IL MOTIVO PER CUI VUOI I DATI </p><div align="center" class="e-mail"><span class="Stile26"><strong><a href="mailto:fabio1cgec@virgilio.it?subject=malfunzionamento/errore sul sito fabio1cgec.altervista.org (volevo ottenere ID e PASSWORD)">fabio1cgec@virgilio.it</div>

    </
    p></td>

    <
    td width="6

    0%"
    height="100%" align="center" valign="middle"><img src="http://forum.it.altervista.org/immagini_per_sito/wallpap2.jpg" width="840" height="747" /></td>

    </
    tr>

    </
    table>

    </
    body>

    </
    html>
    Ultima modifica di dreadnaut : 21-12-2012 alle ore 13.37.25 Motivo: + tag [php] per il codice

  8. #8
    Guest

    Predefinito

    Chiedo scusa a dreadnaut, ma non avevo proprio visto il tag PHP.
    Comunque la pagina di interrogazione DB dovrebbe essere così:
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>Interrogazione db</title>

    </head>



    <body>

    <?php

    // Connecting, selecting database
    session_start();
    $link = mysql_connect('localhost', '', '')

    or die(
    'Could not connect: ' . mysql_error());

    mysql_select_db('my_fabio1cgec') or die('Could not select database');

    // Performing SQL query

    $utente = mysql_real_escape_string($_POST['utente']); // è meglio togliere caratteri come l'apostrofo (' viene rimpiazzato con \')
    $pwd=mysql_real_escape_string($_POST['pwd']);
    $sesso=$_POST['sesso'];
    $query = "SELECT * FROM generale WHERE ID='".$utente."' AND PASSWORD='".$pwd."' AND SESSO='".$sesso."'";
    $result = mysql_query($query) or die('Query failed: ' . mysql_error());

    $num_rows = mysql_num_rows($result);



    if(
    $num_rows==0){
    //non ho trovato alcun utente con nome e pwd indicate rimando a pagina inizio
    $location = 'http://fabio1cgec.altervista.org/nuove_creazioni/errore_di_login/menu_generale.php';
    }
    else{
    //qualcosa ho trovato inizializzo variabili di sessione e stabilisco la tipologia di utente che registro nella variabile $tipuser
    $_SESSION['id_utente']=$utente;
    $tipuser=mysql_result($result,0,'tipo');
    $_SESSION['tipo']=$tipuser;
    $_SESSION['sesso']=$sesso;

    //il comando switch su una var consente di eseguire un blocco istruzioni a seconda del valore della variabile
    switch ($tipuser) {
    case
    "G":
    //rimando al link per docenti
    $location = 'http://fabio1cgec.altervista.org/nuove_creazioni/cose_per_studenti_e_genitori/la_2Cgec.php';
    break;
    case
    "D":
    //rimando al link per docenti
    $location = 'http://fabio1cgec.altervista.org/nuove_creazioni/cose_per_prof/la_2Cgec.php';
    break;
    case
    "S":
    //rimando al link per studenti
    $location = 'http://fabio1cgec.altervista.org/nuove_creazioni/cose_per_studenti/la_2Cgec.php';
    break;
    case
    "A":
    //rimando al link per studenti
    $location = 'http://fabio1cgec.altervista.org/nuove_creazioni/cose_per_tutto/menu_generale.php';
    break;
    default:
    //rimando al link per tutti quelli che non rientrano nei casi precedenti
    $location = 'http://fabio1cgec.altervista.org/nuove_creazioni/errore_di_login/menu_generale.php';
    break;
    }
    }

    ?>
    <script>
    self.opener.location.href = '<?=$location; ?>';
    self.close();
    </script>
    <?

    // Free resultset
    mysql_free_result($result);
    // Closing connection
    mysql_close($link);
    ?>
    </body>

    </html>
    Ho provato sul mio sito e sembrerebbe funzionare come vuoi tu.
    Vorrei farti notare però due cose:
    1. È buona cosa utilizzare un numero come id, invece dell'username.
    2. La password dovrebbe essere criptata prima di andare nel Database.

  9. #9
    Guest

    Predefinito

    vedi....me lo hanno consigliato in tanti e ci ho provato....ho guardato anche parecchi tutorial su internet su come fare....ma non so come si fà :$

  10. #10
    Guest

    Predefinito

    le altre pagine come devono essere? i codici intendo
    scusami se ti sto tormentando ma sono 3 mesi k faccio tentativi e k non ne vengo fuori

  11. #11
    Guest

    Predefinito

    Per criptare la password ci sono funzioni apposta di PHP come sha1() e md5(). Per usarle basta, quando inserisci la password nel database, fare una query come questa:
    Codice PHP:
    $query = "INSERT INTO generale VALUES('".$utente."', '".sha1($password)."', [...])";
    e poi nella query di interrogazione DB
    Codice PHP:
    $query = "SELECT * FROM generale WHERE ID='".$utente."' AND PASSWORD='".sha1($pwd)."' AND SESSO='".$sesso."'";
    Qui ho utilizzato sha1, ma se vuoi usare md5 o un'altra, basta solo sostituire sha1 con il nome della funzione che vuoi usare.

    Per quanto riguarda le altre pagine non avevo scritto niente perché vanno bene così.

  12. #12
    Guest

    Predefinito

    ma la funzione sha1() devo scriverla sulla pagina di interrogazione o sulla sezione sql del db stessa?

  13. #13
    Guest

    Predefinito

    La funzione non la devi scrivere perché è già fatta da PHP, tu la devi solo chiamare, e i punti in cui la chiami sono quelli in cui fai la INSERT (non so in quale pagina l'hai fatta) e dove fai la SELECT, che è nella pagina di interrogazione database, a riga 32 se non ho sbagliato a contare.

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

    Predefinito

    Sarebbe meglio criptare in SHA1 direttamente su mysql: c'é la funzione apposita.

    Nel codice sopra, occhio alla session_start(): per essere utilizzata, non deve essere inviato nessun output, per far modificare a php l'header della pagina.

    Note:

    To use cookie-based sessions, session_start() must be called before outputing anything to the browser.
    Inoltre, nel sorgente sopra ci sono anche degli errori sintattici, del tipo:

    Codice PHP:
    $link = mysql_connect('localhost', '', '')
    Manca il ;


    Ciao!
    Ultima modifica di alemoppo : 21-12-2012 alle ore 15.32.23

  15. #15
    Guest

    Predefinito

    sul mio sito non ho ancora messo la pubblica registrazione...per ora gli account gli aggiungo io manualmente direttamente sul db

  16. #16
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Inoltre, nel sorgente sopra ci sono anche degli errori sintattici, del tipo:

    Codice PHP:
    $link = mysql_connect('localhost', '', '')
    Manca il ;
    Se guardi attentamente nella riga dopo c'è
    Codice PHP:
    or die('Could not connect: ' . mysql_error());
    quindi è giusto.

    Se li inserisci manualmente basta fare come query
    Codice:
    INSERT INTO generale VALUES('username', SHA1('password'), [...]);
    Dove al posto di username e password metti l'username e la password che vuoi.

    Se invece utilizzi PHPMyAdmin, quando clicchi su Inserisci vedrai che per ogni campo c'è la colonna Funzione, che ti permette di scegliere SHA1 o MD5 (anche MySQL può utilizzare queste funzioni per criptare) e provvederà lui a costruire la query (che uscirà come quella che ho scritto qui sopra).

  17. #17
    Guest

    Predefinito

    GRAZIE MILLE!!!
    grazie a te sono riuscito a fare tutto.....adesso manca solo la possibilità di registrazione autonoma....ma siccome è un sito ''dedicato'' sono indeciso se farla....quindi per adesso meglio aspettare!!!

    grazie 100
    ti tengo buono per altri dubbi :P

Regole di scrittura

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