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

    passagio di variabili tra pagine senza $_POST

    Buongiorno,

    Vi espongo in breve il mio quesito:

    In quasi tutte le documentazioni su PHP online, per quel che riguarda il passaggio di parametri attraverso un form tra pagine diverse viene riportato il seguente metodo:

    pagina form.html :

    <form action=info.php method=post>
    <input type=text name=myText value=ciao>
    </form>

    pagina info.php :

    <?php
    $myText = $_POST["myText"];
    echo $myText;
    ?>

    Quindi ho dovuto assegnare esplicitamente il valore del campo "myText" alla variabile $myText ricavandolo dall'array dei valori POST contenuti nell'header della richiesta.

    Tuttavia in altri e più sparuti esempi in qualche modo questi valori vengono ricavati implicitamente:

    pagina info_alt.php :

    <?php
    echo $myText;
    ?>

    come riportato nell'esempio in http://www.madirish.net/?article=29#passing_variables

    Ora, questa diversa metodologia dipende dal tipo di sistema operativo, è una impostazione del web server o un demone tipo CGI che si occpa di "intercettare" i dati post ed allocare i valori nelle rispettive variabili?

    Grazie a chi avrà la pazienza di rispondermi!

    ciao

    marcello

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    44
    Se non ricordo male c'è un settaggio nel php.ini che permette di tradurre i valori contenuti negli array $_GET e $_POST direttamente in variabili che prendono il nome dei campi. Ma non vorrei dire una cretinata.

    Comunque per quel che ne so io non c'è altro modo di passare i valori di un form se non utilizzando POST o GET.
    S:

  3. #3
    grazie Zimok!

    Il modo sembra esserci, magari è proprio un parametro di PHP... vediamo se qualcuno se ne ricorda

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    44
    Mi pare impossibile passare dei dati da una pagina HTML a PHP senza utilizzare POST o GET.
    S:

  5. #5
    Zimok, ti posso assicurare che in qualche modo è possibile, dato che sto facendo una customizzazione su di un sito che funziona in questo modo, inoltre:

    http://www.madirish.net/?article=29#passing_variables

    <html>
    <body>
    <form method="post" action="form2.php">
    Username: <input type="text" name="uname">

    Password: <input type="password" name="pw">

    <input type="submit"><input type="reset">
    </body>
    </html>


    Once this information is filled out and the user hits the submit button, the form data will get 'posted' to 'form2.php' as per the instructions in the <form> tag. Let us say we only want to allow users who enter the username 'admin' and the password 'secretWord' to view the data on form2.php, and all others to be redirected back to the form.php page to retry their password. Form2.php could be coded as:

    <html>
    <head>
    <?php
    if (($uname != "admin") && ($pw != "secretWord"))
    {print "<script>alert('Sorry, wrong username/password');";
    print "location.href='form.php';</script>";
    }
    ?>
    </head>
    <body>
    Welcome to the admin screen!
    You entered the correct username: <?php print $uname; ?> and password: <?php print
    $pw; ?>
    </body>
    </html>

    You will notice that the form variables passed to the second page are passed as the name of the form field preceded by a $ sign. Thus if you have:

    <input type="text" name="thisVar">



    It would be passed when the information was posted to the form action page as:

    $thisVar

    URL variables are passed in much the same way. URL variables are usually passed in href anchor tags, and are always in the format:

    location.ext?var1=value1&var2=value2&var3=value3
    L'unica differenza con gi altri tutorial è che il tipo stà parlando esclusivamente di una installazione linux, forse non è semplicemene possibile farlo su piattaforma win.

    Certo una funzione del genere sarebbe molto utile!

  6. #6
    Allora.... la fantomatica impostazione del php.ini di cui parlate è la direttiva register_globals.
    Se settata su OFF permette di recuperare le variabili solo ed esclusivamente dagli array superglobali ($_GET, $_POST, $_SESSION eccetera).
    Ergo, esige solo questa dicitura:
    Codice PHP:
    <?php
    $myText 
    $_POST["myText"];
    echo 
    $myText;
    ?>
    Se settata su ON, invece, permette il famoso short-cut:
    Codice PHP:
    <?php
    echo $myText;
    ?>
    Perché nei servizi di hosting, sopratutto quelli di ultima generazione con PHP5, questa direttiva è settata su OFF???
    Per evitare grossi problemi di sicurezza!!!!.
    Senza che mi metto a dare qui i ragguagli tecnici, vi invito ed esorto a leggere la Guida alla Sicurezza in PHP.

    Vi comunico anche che nella prossima versione di PHP, la 6 (semmai verrà rilasciata) questa direttiva sarà tolta dal php.ini ed impostata (senza possibilità di modifica) su OFF.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    44
    Allora.... la fantomatica impostazione del php.ini di cui parlate è la direttiva register_globals.
    Si ma mi devi spiegare perchè sarebbe fantomatica...
    S:

  8. #8
    grazie alcio!!!

    Era esattamente quello che stavo cercando!
    Sono conscio del fatto che ci sia un problema di sicurezza, tuttavia il sito che devo implementare è stato sviluppato in questo modo, ergo per ogni singola interfaccia di inserimento (e sono tante...) dovrei nell'apposita paginetta dichiarare TUTTE le variabili e recuperarle, considerato che non sono sempre passate in GET o in POST ma talvolta in un modo talvolta nell'altro... ti lascio immaginare non tanto il lavoro quanto la pesantezza di tutti questi IF.

    Inoltre il sito di test deve essere del tutto conforme a quello di produzione.

    Il problema è che anche modificando quel parametro non riesco ad ottenere il risultato voluto!

    i parametri sono allo stato attuale:

    register_globals = On
    register_long_arrays = On
    register_argc_argv = On
    auto_globals_jit = On

    Eppure così devo recuperare i valori dagli array GET e POST...
    Sto utilizzando XAMPP come ambiente di test, secondo te potrebbe dipendere da questo?

    Ciao e grazie

  9. #9
    Capisco quale sia la mole di lavoro, però ti consiglio di nuovo caldamente di leggere la guida alla sicurezza in PHP che ti ho linkato e fare un filtraggio mooooolto stringente degli input passati.

    Altrimenti, questo sito su cui stai lavorando diventerà in breve tempo una bellissima pagina web piena di errori nel DB (nella migliore delle ipotesi) e di codice incoluato per attacchi XSS (nella peggiore).

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  10. #10
    ho letto ho letto...

    sfortunatamente i tempi ristretti non permettono di modificae così in profondità il codice!

    =)

    grazie e ciao

    (comunque, oer chi fosse interessato, alla fine ci sono u n fracco di php.ini files in XAMPP, quindi ho fatto un bulk replace con ultraedit di "register_global = Off" con "register_global = On", adesso tutto funziona come ci si attenderebbe!)

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.