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

    [PHP] Codice corretto che però non funziona

    Ho fatto moltissime prove modificando il codice che ho scritto, ma fino ad ora non sono riuscito a capire dov'è che sbaglio. Dunque, io ho realizzato delle pagine PHP per un sito, quelle che ora vi sottopongo sono 4:

    - pagina LOGIN.HTM, la quale contiene un form per il login appunto
    - pagina LOGIN.PHP, viene immediatamente dopo la prima e controlla che i dati siano presenti nel database, quindi inizializza una sessione e setta alcune variabili di sessione utilili durante la navigazione.

    queste due lavorano correttamente. Ora però io mi sono posto un problema, ossia voglio che in alcune pagine del mio sito, venga controllata l'identità del navigatore, quindi ho creato una pagina chiamata MATCH.PHP della quale vi sottopongo il codice:

    Codice PHP:
    <?
    function Controlla($id$nome$password)
    {
      include(
    'db.php');
      
    $query "SELECT nome, pass FROM giocatori WHERE stato <> 'INATTIVO' AND id = $id LIMIT 1";
      
    $result mysql_query($query$db) or die ( mysql_error() );
      
    $match 0;
      
      
    $row mysql_fetch_array($result);
      if(
    $row['nome'] == $nome && $row['pass'] == $password)
      {
        
    $match++;
      }
      
      if(
    $match != 1)
      {
        
    header('Location: ../login.htm');
        exit;
      }
    }
    ?>
    si può ben vedere come questa sia una funzione richiamabile da qualsiasi pagina. Infatti, la pagina LOGIN.PHP rimnda diciamo alla pagina principale che ho chiamato SESSION2.PHP, la quale inizia così:

    Codice PHP:
    <?
    session_start
    ();
    include(
    'includes/match.php');
    $id $_SESSION['idplayer'];
    $nome $_SESSION['nome'];
    $password $_SESSION['pass'];
    Controlla($id$nome$password);
    include(
    'includes/db.php');
    ?>
    mi sembra di aver scritto tutto correttamente, infatti quando testo il tutto online, non viene generato nessun errore (vedi ad esempio la pagina MATCH.PHP alla riga "$result = mysql_query($query, $db) or die ( mysql_error() );" la pagina resta bianca, la query che viene generata per il controllo è corretta, ma la pagina va in errore apparentemente senza motivo.

    Non so se mi sono spiegato, ma avete idea del perchè accade tutto ciò?
    "Una volta che si saranno esaurite senza successo tutte le possibilita', ci sara' una soluzione, semplice e ovvia, che saltera' immediatamente all'occhio di chiunque altro."

    Guardate: Il Miracolo delle Noci!!

  2. #2
    Scusa ma non ho copito bene... MA devi fare in modo che alcune pagine siano accessibili solo dopo il login e che quindi non possano essere lette da utenti non registrati o non loggati?
    Non esistono cose che non si possono fare... Esistono solo cose che non si sanno fare!

  3. #3
    esattamente così. Se avete alternative sottoponete pure, sapete, io sono niubbo e non so molto.
    "Una volta che si saranno esaurite senza successo tutte le possibilita', ci sara' una soluzione, semplice e ovvia, che saltera' immediatamente all'occhio di chiunque altro."

    Guardate: Il Miracolo delle Noci!!

  4. #4
    Utente di HTML.it L'avatar di thepooh
    Registrato dal
    Oct 2005
    Messaggi
    203
    nelle pagine che vuoi proteggere inserisci il richiamo a uno script di controllo, se trova corrispondenza va avanti altrimenti ti manda a una pagina chiedendoti di loggarti:

    codice:
    <?
    // *** Restrict Access To Page: Grant or deny access to this page
    $FF_authorizedUsers=" ";
    $FF_authFailedURL="login_errato.php";
    $FF_grantAccess=0;
    if (!session_id()) session_start();
    if (isset($HTTP_SESSION_VARS["MM_Username"])) {
      if (true || !(isset($HTTP_SESSION_VARS["MM_UserAuthorization"])) || $HTTP_SESSION_VARS["MM_UserAuthorization"]=="" || strpos($FF_authorizedUsers, $HTTP_SESSION_VARS["MM_UserAuthorization"])) {
        $FF_grantAccess = 1;
      }
    }
    if (!$FF_grantAccess) {
      $FF_qsChar = "?";
      if (strpos($FF_authFailedURL, "?")) $FF_qsChar = "&";
      $FF_referrer = "Restricted Area";
      $FF_authFailedURL = $FF_authFailedURL . $FF_qsChar . "accessdenied=" . urlencode($FF_referrer);
      header("Location: $FF_authFailedURL");
      exit;
    }
    ?>
    Ora ti faccio una domanda io
    come si fa a inserire il codice colorato

  5. #5
    Originariamente inviato da thepooh
    nelle pagine che vuoi proteggere inserisci il richiamo a uno script di controllo, se trova corrispondenza va avanti altrimenti ti manda a una pagina chiedendoti di loggarti:
    il che è ciò che faccio io solo con una sintassi differente dalla tua, o mi sbaglio?

    comunque la sintassi colorata la puoi ottenere scrivendo con il tag PHP invece di CODE così:

    [ P H P ]
    $tuo_codice
    [ / P H P ]


    ma senza spazi nel tag
    "Una volta che si saranno esaurite senza successo tutte le possibilita', ci sara' una soluzione, semplice e ovvia, che saltera' immediatamente all'occhio di chiunque altro."

    Guardate: Il Miracolo delle Noci!!

  6. #6
    up
    "Una volta che si saranno esaurite senza successo tutte le possibilita', ci sara' una soluzione, semplice e ovvia, che saltera' immediatamente all'occhio di chiunque altro."

    Guardate: Il Miracolo delle Noci!!

  7. #7
    vi prego, non so più che fare...
    "Una volta che si saranno esaurite senza successo tutte le possibilita', ci sara' una soluzione, semplice e ovvia, che saltera' immediatamente all'occhio di chiunque altro."

    Guardate: Il Miracolo delle Noci!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    non ho idea di come sia fatto il form in cui raccogli i dati (user, password per intenderci).
    Sono giusti i percorsi degli include? una volta c'è una cartella, un'altra niente... tutto al posto giusto dici, vero?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    tutto giusto, se non torvasse le pagine nell'include darebbe almeno l'errore.
    comunque si, la pagina MATCH.PHP e la pagina DB.PHP sono nella stessa cartella che si chiama INCLUDES
    "Una volta che si saranno esaurite senza successo tutte le possibilita', ci sara' una soluzione, semplice e ovvia, che saltera' immediatamente all'occhio di chiunque altro."

    Guardate: Il Miracolo delle Noci!!

  10. #10
    prova a modificare il file match.php in questo modo:
    Codice PHP:
    <?
    function Controlla($id$nome$password)
    {
      include(
    'db.php');
      
    $query "SELECT nome, pass FROM giocatori WHERE stato <> 'INATTIVO' AND id = $id LIMIT 1";
      
    $result mysql_query($query$db) or die ( mysql_error() );
      
    $match 0;
      
      
    $row mysql_fetch_array($result);
      if(
    $row['nome'] == $nome && $row['pass'] == $password)
      {
        
    $match++;
      }
      
      if(
    $match != 1)
      {
        
    header('Location: ../login.htm');
        echo 
    "non puoi usare la funzoine header...";
        exit;
      }
    }
    ?>
    se visualizzi l'echo che ho aggiunto significa che hai già generato da qualche altra parte dell'output e qiundi non puoi usare la funzione header...
    prova, perchè se ho capito bene è li il problema
    There are 10 types of people in the world: Those who understand binary, and those who don't.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.