Visualizzazione risultati 1 fino 16 di 16

Discussione: Considerare vuota variabile PHP

  1. #1
    Guest

    Predefinito Considerare vuota variabile PHP

    salve ragazzi,spero che possiate aiutarmi.
    Ho questo script php:
    Codice PHP:
    <?
    $suddivisa
    = $_POST['linkdelvideo'];
    if (empty(
    $suddivisa)) {
    echo
    "Non hai inserito niente!";
    echo
    '<html><head><title>Prova condivisione video</title></head><body>
    <form action="prova.php" method="POST">
    <input type="text" name="linkdelvideo">
    <input type="submit" value="Vai">
    </form>'
    ;
    } else {
    echo
    "Caricato nel database ;)";
    ?>
    <html><head><title>Prova condivisione video</title></head><body>
    <form action="prova.php" method="POST">
    <input type="text" name="linkdelvideo">
    <input type="submit" value="Vai">
    </form>
    <?
    $suddivisa
    = explode("v=", "$suddivisa");
    $primopezzourl = $suddivisa[0];
    $secondopezzourl = $suddivisa[1];
    echo
    $secondopezzourl;
    }
    ?>
    Questo è tutto il codice della pagina. Ora vorrei sapere come fare per far si che quando aggiorno la pagina consideri la variabile "linkdelvideo" vuota. Con questo codice quando aggiorno è come se ricaricasse i dati nel database,invece io vorrei che una volta caricati e aggiorno la pagina,non lo rifacesse ma bensi' considerasse vuota la variabile "linkdelvideo" e che compaia la frase "Non hai inserito niente!"
    Aiutatemi vi prego
    Ultima modifica di dreadnaut : 16-02-2013 alle ore 14.36.13 Motivo: + leggibilità, tag [php] per il codice, indentazione

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Piuttosto, ti converrebbe verificare che il link non sia già presente dal database: risolveresti due problemi con una sola aggiunta.

  3. #3
    Guest

    Predefinito Non mi serve quello

    è un sistema di pubblicazione quindi il link può essere inserito più volte nel database
    quindi credo che la soluzione sia completamente diversa

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Piano, non è che se non ti rispondiamo in 5 minuti il mondo si è dimenticato di te e devi fare più rumore possibile!

    Se sei certo di voler avere più copie del link nel database, per evitare che il form venga elaborato una seconda volta devi evitare che l'utente possa aggiornarlo. Questo si ottiene separando la pagina che elabora i dati e li inserisce nel database da quella che mostra il risultato.

    Qualcosa tipo: <pagina con il form> fa submit dei dati a <pagina che inserisce nel db> la quale li elabora e poi redirige a <pagina che mostra il risultato> (oppure a <pagina di errore>). Quando l'utente aggiorna la pagina, aggiorna <pagina che mostra il risultato> e quindi l'operazione sul db non viene ripetuta.

    Puoi effetturare il redirect in php usando
    Codice PHP:
    header('Location: ....');
    Trovi un sacco di discussioni a riguardo di header e redirect sul forum, prova a cercare.
    Ultima modifica di dreadnaut : 16-02-2013 alle ore 15.21.31

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Piano, non è che se non ti rispondiamo in 5 minuti il mondo si è dimenticato di te e devi fare più rumore possibile!

    Se sei certo di voler avere più copie del link nel database, per evitare che il form venga elaborato una seconda volta devi evitare che l'utente possa aggiornarlo. Questo si ottiene separando la pagina che elabora i dati e li inserisce nel database da quella che mostra il risultato.

    Qualcosa tipo: <pagina con il form> fa submit dei dati a <pagina che inserisce nel db> la quale li elabora e poi redirige a <pagina che mostra il risultato> (oppure a <pagina di errore>). Quando l'utente aggiorna la pagina, aggiorna <pagina che mostra il risultato> e quindi l'operazione sul db non viene ripetuta.

    Puoi effetturare il redirect in php usando
    Codice PHP:
    header('Location: ....');
    Trovi un sacco di discussioni a riguardo di header e redirect sul forum, prova a cercare.
    Grazie della risposte,sei stato davvero molto utile,hai ragione ad avermi segnalato solo che devo finire entro le 4.Ho cercato come fare ma non capisco come mettere header in if ed else (PHP) quando faccio il redirect.Aiuto?

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Non si capisce molto quale sia il tuo problema; qualcosa del genere?
    Codice PHP:
    <?php
    $suddivisa
    = $_POST['linkdelvideo'];
    if (empty(
    $suddivisa)) {
    header('Location: errore_niente.php');
    } else {
    $id = aggiungi_roba_al_db_restituisci_nuovo_elemento($suddivisa);
    header('Location: carica_ok.php?id-link-caricato=' . $id);
    }
    // fine dello script

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Non si capisce molto quale sia il tuo problema; qualcosa del genere?
    Codice PHP:
    <?php
    $suddivisa
    = $_POST['linkdelvideo'];
    if (empty(
    $suddivisa)) {
    header('Location: errore_niente.php');
    } else {
    $id = aggiungi_roba_al_db_restituisci_nuovo_elemento($suddivisa);
    header('Location: carica_ok.php?id-link-caricato=' . $id);
    }
    // fine dello script
    Provo a spiegartelo così: (scusa ma nn mi sono ftto capire molto)
    Paginaform.php ------>ha un form che punta a se stesso e un campo di testo dove si mette il link e si clicca su vai
    una volta cliccato su vai la pagina stessa pagina riceve la variabile del link "linkdelvideo" e la inserisce nel database.
    Se non è stato inserito niente ti dice (sempre su quella pagina) "non hai inserito niente!"
    ma se hai inserito il link,e fai invia,ti dice che ha caricato giusto? solo che se fai aggiorna lo carica di nuovo il link.
    Vorrei fare tutto sulla stessa pagina,anche se il tuo script dovrebbe funzionare

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Se vuoi fare tutto con una pagina sola, devi comunque rediregere alla pagina stessa almeno una volta:

    paginaform (visualizza il form) --submit--> paginaform (salva nel db) --redirect--> paginaform (mostra il risultato)

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Se vuoi fare tutto con una pagina sola, devi comunque rediregere alla pagina stessa almeno una volta:

    paginaform (visualizza il form) --submit--> paginaform (salva nel db) --redirect--> paginaform (mostra il risultato)
    mmmm...prendi facebook per esempio,tu pubblichi un post e lui te lo salva,una volta fatto pubblica lui lo pubblica e quando fai aggiorna nn lo fa ancora una volta.Forse nn usa solo il php ma credo si possa fare con quest'ultimo.
    E poi quando invio il form (come dici te) lo invio alla stessa pagina,questa pagina lo mette nel database,ma se faccio aggiorna lo fa ancora una volta

  10. #10
    Guest

    Predefinito

    Potrebbe funzionare questo?
    form.php---->submit(invio la variabile)------>inserisci.php---->inserisce i dati------>redirect a------->form.php

  11. #11
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Si, così dovrebbe andare. L'importante è che ci sia un redirect fra lo script che esegue l'operazione e quello che mostra il risultato, così non evitare il problema del refresh.

  12. #12
    Guest

    Predefinito

    Mi permetto di suggerire per queste cose l'uso di Ajax.

    form.php al clic su "invia" richiama uno script javascript
    javascript prende i valori dai campi di input e li manda a inserisci.php
    inserisci.php restituisce allo script javascript il risultato delle sue operazioni
    lo script javascript visualizza l'esito, senza ricaricare la pagina

    leggermente più complesso ma decisamente più performante e alla fin fine semplice da gestire.... se si conosce javascript e Ajax e seho capito bene il problema.

    Ciao!

  13. #13
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    @pastamadre:
    e se arriva qualcuno senza javascript, non funziona più nulla; un sito dovrebbe sempre funzionare senza js, e poi diventare più rapido e luccicoso via js. Sul "decisamente più performante" ho anche un sacco di dubbi.

  14. #14
    Guest

    Predefinito

    Non è la prima volta che la mia propensione ad usare Javascript e in particolare le transazioni Ajax provoca le stesse motivatissime e comprensibili obiezioni. Certo che si può fare tutto senza javascript. Ma io lo trovo utilissimo.

    Per le performance non credo ci siano dubbi. Se lavori su una pagina con immagini o comunque "pesante" Ajax vince con goleada rispetto al ricaricamento dell'intera pagina... non credi?

    Ciao!

  15. #15
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Citazione Originalmente inviato da pastamadre Visualizza messaggio
    Se lavori su una pagina con immagini o comunque "pesante" Ajax vince con goleada rispetto al ricaricamento dell'intera pagina... non credi?
    Esiste la cache dei browser

    Ciao!

  16. #16
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da pastamadre Visualizza messaggio
    Non è la prima volta che la mia propensione ad usare Javascript e in particolare le transazioni Ajax provoca le stesse motivatissime e comprensibili obiezioni.
    Il problema non è usarlo, quanto il non avere dietro una struttura in grado di funzionare anche senza.

    Per le performance non credo ci siano dubbi. Se lavori su una pagina con immagini o comunque "pesante" Ajax vince con goleada rispetto al ricaricamento dell'intera pagina... non credi?
    Le immagini vengono caricate una volta sola, e poi sono in cache '-.- E se non lavori su una pagina pesante invece, ti ritrovi invece a caricare e ricompilare ad ogni refresh una tonnellata di script di supporto (vedi jquery tax).

    E in questa discussione non abbiamo maree di immagini e non abbiamo una pagina pesante, quindi siamo andati OT

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •