Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1

    problemi con le sessioni #2

    AIUTO AIUTO AIUTO

    la pagina del controllo login

    $nickname = $_POST['nickname'];
    $password = $_POST['password'];
    $a = "SELECT * FROM membri order by id desc";
    $b = mysql_query($a);
    $c = mysql_fetch_array($b);
    if (($c['nickname'] == $nickname) && ($c['password'] == $password)) {
    session_start();
    session_unset();
    session_destroy();
    session_start();
    $_SESSION['id']=$c['id'];
    $_SESSION['nickname']=$c['nickname'];

    mi funziona solo con 1 record, il primo... non riesco ad entrare con i nickname e le password inseriti negli altri record...cosa può esseere??

  2. #2
    la query sql meglio farla come segue

    $a = "SELECT * FROM membri WHERE nickname='$nickname' AND password='password' order by id desc";

    così tiri fuori subito il record di quel nominativo no?

  3. #3
    ok grazie mille

    il problema è che, per esempio, io ho 2 record

    nick: Redazione pass: aaaaaa
    nick2: Marco986 pass: aaaaaa (grande fantasia)

    però io con l nick 1 riesco ad entrare e con il nick 2 no.... come si può fare?


    ps: non riesco ad entrare nemmeno con i nick degli altri utenti...

  4. #4
    nessuna anima pia???

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Ciao di nuovo... hai visto come esesgui la query? Manca il parametro handle di connessione... Ti consiglio inoltre di usare nomi più consistenti per le variabili ed eventuali funzioni e il famoso error_report di ieri su E_ALL.

    codice:
    $query = "SELECT * FROM membri WHERE nickname='$nickname' AND password='$password'";
    $result = mysql_query($query, $connection);
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6

  7. #7
    E_ALL mi da questi errori

    Notice: Use of undefined constant Sql85222_1 - assumed 'Sql85222_1' in D:\Inetpub\webs\gs-communityit\controllologin.php on line 5

    Line 5:
    $scegli_db=mysql_select_db(Sql85222_1,$connection) or die ("non trovo la tabella");

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    bella forza: il nome del database è una stringa... e tu stai passando qualcosa che non sa che roba sia:

    ti consiglio di fare un bel file di configurazione tipo

    conf.inc.php
    codice:
    <?php
      $db_host = "host_fornito_da_aruba";
      $db_name = "Sql85222_1";
      $db_user = "Sql85222";
      $db_password ="quella_fornita_da_aruba";
    ?>
    e includerlo in tutte le pagine in cui fai la connessione al database.
    Ahi, inoltre, vedo hosting Windows, che non è il più indicato per php...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    non cambia niente... non sarebbe meglio se creassi nuovamente da zero il controllo login?

    perchp mi pare assurdo che mi legga un record ma non gli altri...

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Ahem... ma a parte quello, poi il resto della connessione la fai correttamente? Se il codice che c'è nella pagina è solo quello che hai postato tu (spero di no), allora mi mangio il cappello di babbo natale se mai ti dovesse funzionare!!!

    Dovresti strutturare un po' meglio l'intero procedimento, su questo non c'è dubbio: ad esempio.

    crei un file di configurazione, prendi il mio esempio come prototipo, ed integralo con le eventuali altre variabili ricorrenti nei tuoi script.

    Crea un file di autorizzazione, ossia qualcosa in cui controlli se una variabile di sessione che indica l'avvenuto (corretto) login è settata (e quindi consenti la navigazione nell'area riservata) oppure no: reindirizzi alla pagina di login-registrazione.

    Devi fare LARGO uso delle sessioni, per cui dovresti avere ben chiaro il loro funzionamento.

    Esempio file auth.php
    codice:
    <?php
      if (!isset($_SESSION['is_logged']) || $_SESSION['is_logged']==0) {
        header("Location: login.php");
      }
    ?>
    file di login (login.php)
    codice:
    <?php
      include("conf.inc.php");
      if (isset($_POST['nickname']) && isset($_POST['password'])) {
        $nickname = $_POST['nickname'];
        $password = $_POST['password'];
        // connessione a db
        $query = "SELECT * FROM membri WHERE nickname='$nickname' AND password = '$password'";
        $result = mysql_query($query, $connection);
        if (mysql_num_rows($result) == 1) {
          session_start();
          $is_logged = 1;
          session_register('is_logged');
          session_register('nickname');
          // in caso scorri l'array con i dati utenti, con il solito mysq_fetch_array
          // e popola l'array di sessione con i dati che ritieni necessari
          // a questo punto puoi fare il redirect alla pagina che credi
          header("Location: index_area_riservata.php");
        }
        else { //login non effettuata, riproponi la maschera di login
        }
      }
      else {// non sono state inviate in post le informazioni necessarie
           // --> maschera di login
      }
    ?>
    Qualcosa del genere insomma.
    In tutte le pagine in cui avrai necessità di verificare l'avvenuto login farai qualcosa del genere:
    codice:
    <?php
      session_start();
      include("auth.php");
      //codice della pagina
    ?>
    Questo proprio a grandissime linee.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.