• User Attivo

    user & pass da form a scrittura file php

    Ciao a tutti ..
    sono newbie di php .... ma sono riuscito a creare uno script per la registrazione ldap funziona ma.. mi sono voluto complicare la vita, e... come al solito non sapendo che pesci pigliare chiedo aiuto a voi!

    ecco lo script
    [html]<html>
    <head>
    <title>Creare e scrivere un file da form con PHP</title>
    </head>
    <body>
    <?php
    if(isset($_POST['submit'])) ($_POST['nome'] && $_POST['cognome']) ;
    $stringa.='<?php '."\n";
    $stringa.='$user = '.$_POST['user'].';'."\n";
    $stringa.='$pass = '.$_POST['pass'].';'."\n";
    $stringa.='$host = 'pippo.it';'."\n";
    $stringa.='$user .= '@{$host}';'."\n";
    $stringa.='$conn = ldap_connect($host) or die('Impossibile connettersi a $host<br>');'."\n";
    $stringa.='if ($conn) {'."\n";
    $stringa.=' @$bind = ldap_bind($conn, $user, $pass);'."\n";
    $stringa.=' if ($bind) {'."\n";
    $stringa.=' echo 'Autenticazione riuscita $user';'."\n";
    $stringa.=' } else { '."\n";
    $stringa.=' echo 'Autenticazione fallita $user';'."\n";
    $stringa.='}'."\n";
    $stringa.='}'."\n";
    $stringa.='?>';
    $scrivi_file=fopen("pippo.php","w");
    fwrite($scrivi_file,$stringa);
    fclose($scrivi_file);
    $leggi_file=fopen("pippo.php","r");
    $dim_file=filesize("pippo.php");
    $contenuto=fread($leggi_file,$dim_file);
    fclose($leggi_file);
    ?>
    <form method=post action="pippo.php">
    <br>User
    <input type="text" name="user" size="20">
    <br>Password
    <input type="password" name="pass" size="20">
    <input type="submit" value="Invia">
    </form>
    </body>
    </html>[/html]

    questo prende user e pass dal form e scrive il file pippo.php, ma il risultato è:

    [html]<?php
    $user = '.$_POST['user'].'; //dovrebbe essere $user = 'user_inserito';
    $pass = '.$_POST['pass'].'; //dovrebbe essere $pass = 'pass_inserita';
    $host = 'pippo.it';
    $user .= '@{$host}';
    $conn = ldap_connect($host) or die('Impossibile connettersi a $host<br>');
    if ($conn) {
    @$bind = ldap_bind($conn, $user, $pass);
    if ($bind) {
    echo 'Autenticazione riuscita $user';
    } else {
    echo 'Autenticazione fallita $user';
    }
    }
    ?>
    [/html]
    in pratica non riesco a passare le variabili "user" e "pass" e farle scrivere sul file php come vedete mi scrive direttamente il comando ma non la user e pass inserita nel form, da chiarire che se li scrivo in chiaro lo script si autentica perfettamente.

    grazie a tutti per l'aiuto!


  • User Attivo

    Invece di
    $stringa.='$user = '.$_POST['user'].';'."\n";
    $stringa.='$pass = '.$_POST['pass'].';'."\n";

    prova a scrivere

    $stringa.='$user = "'.addslashes($_POST['user']).'";'."\n";
    $stringa.='$pass = "'.addslashes($_POST['pass']).'";'."\n";

    La funzione "addslashes" serve a filtrare eventuali tentativi di injection e ti consiglio di usarla in tutti i punti in cui recuperi un valore da POST o GET.


  • User Attivo

    ciao grazie della risposta ma scrive questo codice

    [HTML]<?php
    $user = "";
    $pass = "";
    $host = 'pippo.it';
    $user .= '@{$host}';
    $conn = ldap_connect($host) or die('Impossibile connettersi a $host<br>');
    if ($conn) {
    @$bind = ldap_bind($conn, $user, $pass);
    if ($bind) {
    echo 'Autenticazione riuscita $user';
    } else {
    echo 'Autenticazione fallita $user';
    }
    }
    ?>[/HTML]

    ma ho notato che c'è un'altro problema, infatti, lo script, parte in automatico appena chiamo la pagina, (e quindi già scrive una volta) poi se invio il form mi rilascia lo script sopra con i campi vuoti e quindi con autenticazione anonima (ecco il testo nella pagina a video: Autenticazione riuscita $user) e la pagina non restituisce errori
    qualche altro suggerimento?

    thanks!