Visualizzazione dei risultati da 1 a 7 su 7

Discussione: pagina login

  1. #1
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313

    pagina login

    Buongiorno a tutti,
    sto provando a sperimentare la funzione di autenticazione con http.
    Ho trovato questo codice che ho modificato per le mie esigenze(modifica momentanea siccome dovrò metterci ancora mano):
    Codice PHP:
    <?php
      
    if (!isset($_SERVER['PHP_AUTH_USER'])) 
      {
        
    header('WWW-Authenticate: Basic realm="localhost"');
        
    header('HTTP/1.0 401 Unauthorized');
        echo 
    'Messaggio da inviare se si preme il tasto Cancel';
        exit;
      } 
      else 
      {
        
    $user strtolower(trim($_SERVER['PHP_AUTH_USER']));
        
    $pass strtolower(trim($_SERVER['PHP_AUTH_PW']));
        echo 
    "<a href=\"login.php?param=$user&param2=$pass\">"
        
        
    $return $_GET['param'];
        echo 
    "$return";
        
        if (
    $return == 1) {
            
    header('WWW-Authenticate: Basic realm="localhost"');
            
    header('HTTP/1.0 401 Unauthorized');
            echo 
    'Messaggio da inviare se si preme il tasto Cancel';
            exit;
        } elseif (
    $return == 0) {
            
    ?>
                [b]Benvenuto[/b]
            <?php
        

         
      }
    ?>
    parte del codice l'ho preso dal link: http://php.net/manual/en/features.http-auth.php
    Come potete vedere dall'index.php rimando i dati alla pagina login.php:
    Codice PHP:
    <?php

    include_once("include/config.php");

    $username $_GET['param'];
    $password $_GET['param2'];

    $utente mysql_escape_string($username);
    $passwo mysql_escape_string($password);

    $sql "SELECT username, password
            FORM utenti
            WHERE username='
    $utente' AND password='$passwo'";

    $res mysql_query($sql) or die ('Invalid query: ' .mysql_error());

    if (!isset(
    $res)) {
        
    $return 1;
        echo 
    "<a href=\"index.php?param=$return\">";  
    } else {
        
    $return 0;
        echo 
    "<a href=\"index.php?param=$return\">";
    }

    ?>
    la variabile return serve a farmi sapere se la query ha trovato risultati positivi oppure no.
    Ma mi da un errore a riga 15 dell'index dove mi dice che param non è definito e alla linea 8 e 9 nella pagina login.php:
    codice:
    Deprecated:mysql_escape_string(): This function is deprecated, use mysql_escape_string() instead. in C:\.....
    Sto tentando di utilizzare questo tipo di login anche per evitare SQL injection, rischio che con l'attuale tipo di login da me creato, sono soggetto.

    Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    Beh i messaggi sono decisamente esplicativi.

    Nel file index.php hai $return = $_GET['param']; che chiaramente non gli stai passando.

    L'altro errore ti sta dicendo che la funzione mysql_escape_string è deprecata. Se avessi fatto copia-incolla dell'errore su google, avresti immediatamente trovato che devi usare mysqli_real_escape_string al suo posto

  3. #3
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    ok grazie.
    per mysqli_real_escape_string ok.
    ma per quanto riguarda la variabile $return che viene incrementato con $_GET['param'] perchè non passa nulla?
    ho sbagliato qualcosa nella stesura del codice?

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    l'uso di $_GET presuppone che nell'url ci sia il parametro stesso, ma se tu accedi come miosito/index.php è evidente che param non c'è, quindi il tuo codice si incazza.

    Per funzionare l'index.php dovresti puntare a index.php?param=qualcosa

  5. #5
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    scusa la mia ignoranza ma non è quello che ho fatto dopo la query per controllare username e password nella pagina di login con il seguente codice:
    Codice PHP:
    ...
    if (!isset(
    $res)) {
        
    $return 1;
        echo 
    "<a href=\"index.php?param=$return\">";  
    } else {
        
    $return 0;
        echo 
    "<a href=\"index.php?param=$return\">";

    ... 
    ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    no, così tu stai stampando semplicemente una stringa. il $_GET prende il parametro dall'url.

    Per spiegarti meglio, estremizzo.

    Io posso stare su una pagina che ha come url index.php?param=1

    e scrivere

    nel codice echo "index.php?param=2".


    ma poi se faccio $_GET["param"] il valore è ovviamente 1!!


    Poi tu PARTI puntando a index.php, che ovviamente non contiene param, quidndi ti dà errore.
    POI passi a login.php e recuperi il parametro. Di questo parametro cosa fai? lo stampi a video con un link (che si apre ma non si chiude), e anche quella parte lì contiene un pò di errori...

  7. #7
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    Ho modificato il codice in questo modo:
    index.php:
    Codice PHP:
    <?php
      
    if (!isset($_SERVER['PHP_AUTH_USER'])) 
      {
        
    header('WWW-Authenticate: Basic realm="localhost"');
        
    header('HTTP/1.0 401 Unauthorized');
        echo 
    'Messaggio da inviare se si preme il tasto Cancel';
        exit;
      } 
      else 
      { 
        
    $user strtolower(trim($_SERVER['PHP_AUTH_USER']));
        
    $pass strtolower(trim($_SERVER['PHP_AUTH_PW']));
        echo 
    "<a href=\"login.php?param=$user&param2=$pass\">"
      }
    ?>
    login.php:
    Codice PHP:
    <?php

    include_once("include/config.php");

    $username $_GET['param'];
    $password $_GET['param2'];

    $utente mysql_escape_string($username);
    $passwo mysql_escape_string($password);

    $sql "SELECT username, password
            FORM utenti
            WHERE username='
    $utente' AND password='$passwo'";

    $res mysql_query($sql) or die ('Invalid query: ' .mysql_error());

    if (!isset(
    $res)) {
            
    header('WWW-Authenticate: Basic realm="localhost"');
            
    header('HTTP/1.0 401 Unauthorized');
            echo 
    'Messaggio da inviare se si preme il tasto Cancel';
            exit;
        } else{
            echo 
    "<a href=\"home.php?param=$utente\">";
        }  
    ?>
    home.php:
    codice:
    <html>
    <head>
    <title>Home Page</title>
    </head>
    <body>
    benvenuto
    </body>
    </html>
    ma in questo modo non riesco nemmeno a far partire l'autenticazione http e mi da pagina bianca.

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.