• Bannato User Attivo

    $HTTP_POST_VARS mi va su una pagina si ed una no

    Faccio caricare delle foto da due pagine differenti del mio sito.
    In una tutto funziona alla grande.

    In un'altra, fatta copiando il codice dell'altra non mi va. Ho scoperto che non mi esegue il ramo dell'IF della condizione

    **if ($HTTP_POST_VARS['submit'])** { #apro IF POST VARS SUBMIT
    if (!is_uploaded_file($HTTP_POST_FILES['file']['tmp_name'])) {
    $error = "You did not upload a file!";
    unlink($HTTP_POST_FILES['file']['tmp_name']);
    ...
    ...
    ...
    

    Che cosa sbaglio? proprio non ne riesco a venire a capo eppure è ugualissima all'altra pagina, cambiano poche cose... ma quelle che cambiano vengono dopo...

    Bohhhh.
    GRAZIE


  • User Attivo

    6 sicuro che nel form da cui arrivi ci sia la variabile "submit"?
    Puoi anche provare a fare, subito prima dell'if, così:

    print_r($HTTP_POST_VARS);

    Così vedi cosa é definito e cosa no!


  • Bannato User Attivo

    Risolto.
    Per favore picchiatemi. Ho perso due pomeriggi a rivedere il codice e tutto il resto.
    Il mio Editor usa il carattere Courier... Che come ben sapete non differenzia molto la s minuscola dalla S maiuscola...


  • Bannato User Attivo

    Ancora un dubbio...
    Mi era stato detto che:

    if ($HTTP_POST_VARS['submit']) { #apro IF POST VARS SUBMIT

    serviva per capire se a quella pagina (di solito quella che salva i dati inviati dal form) un utente ci era arrivato per caso (e quindi quella variabile era FALSE) oppure se ci era arrivato perchè aveva premuto il tastino submit del form.

    Bene, oggi ho provato questo.
    Ho riempito il form e l'ho inviato alla pagina che salv i dati premendo i ltasto submit.
    Una volta avventuo il salvataggio ho aggiornato/ricaricato la pagina ed anzichè darmi il ramo ELSE del controllo la pagina mi ha RISALVATO su una riga diversa le informazioni.
    Ma se ho ricaricato la pagina, ad essa non ci sono arrivato tramite "pigiatura" del pulsantino...

    Come risolvo allora questo problema? Non voglio che uno si metta a riaggiornare 1000 volte una pagina inserendomi 1000 volte lo stesso commento.

    Quindi quell'IF di sopra fa o non fa quello che ebbi capito?


  • Moderatore

    Devi assegnare un token oppure una sessione per risolvere il problema.
    Imposti ad esempio: $_SESSION['form_inviato']=0 nella prima pagina.
    Quando invii dai $_SESSION['form_inviato']=1 alla fine delle operazioni da fare dopo aver spinto il tasto submit e nella stessa pagina, prima, come controllo metti:

    if ($_POST['submit'] && $_SESSION['form_inviato']==0) {etc etc

    Se vuoi che lo stesso utente possa riusare per una nuova operazione la pagina, rimetti a zero la variabile.

    Altro metodo: alla fine delle operazione metti un header("Location: url_di_arrivo") in modo che l'utente non possa riaggiornare.

    Se hai bisogno di maggiori info, chiedi pure 🙂


  • Bannato User Attivo

    Per far evitare il post uguale avevo intenzione di mettere un controllo sul tempo. Una volta inviata la news salvo in una tabella il momento in cui è stata inviata ed il nome dell'user che l'ha inviata.
    Al post successivo se il time attuale è maggiore di quello precedente + 3600 secondo (per esempio) lascio postare altrimenti no.

    Io non volgio che se uno per un motivo qualsiasi arriva alla pagina che mi salva i dati, mi salvi delle news senza informazioni. Cioè mi carica la pagina "salva-dati.php" e questa mi salva nel db una news senza titolo ne testo.
    Spero di aver spiegato il problema.

    P. S.
    Non so se posso usare le session poichè ho integrato le session del PHPBB sul sito.
    Grazie Massy troppo gentile. Metterò links ai tuoi siti una volta terminato la versioen GT del mio sito 😄