2012-07-28 7 views
5

Sono nuovo di PHP.PHP: invia un popup di avviso quindi reindirizza la pagina

Quando qualcuno carica una dimensione di file troppo grande, voglio mostrare loro un popup di avvertenza e reindirizzare a una pagina precedente (o viceversa).

if(file size is too big){  
    ob_start(); 
    header("location:index.php");  
    echo "<script type='text/javascript'>alert('Your File Size is too big!');</script>"; 
    ob_end_flush(); 
    exit;  
} 

Questo codice sopra mi reindirizzerà a index.php e non mostrerà alcun popup di avviso.

risposta

9

fare qualcosa di simile

header("Location: index.php?Message=" . urlencode($Message)); 

Poi index.php ...

if (isset($_GET['Message'])) { 
    print $_GET['Message']; 
} 

In altre parole, index.php sarà sempre verificare se è stata passata un messaggio nel URL. Se ce n'è uno, mostralo. Poi, basta passare il messaggio nel reindirizzamento

se davvero si vuole usare un popup modale, generare i js ...

if (isset($_GET['Message'])) { 
    print '<script type="text/javascript">alert("' . $_GET['Message'] . '");</script>'; 
} 

Si noti che questo si romperà se si utilizza le virgolette nel messaggio a meno che non fuggirli

+0

Questo è perfetto grazie. Mi chiedevo se dovevo preoccuparmi dell'iniezione di codice dal l'utente può digitare ciò che vogliono nel messaggio. –

+0

Sì - Vedere [questa pagina] (https://www.owasp.org/index.php/XSS_ (Cross_Site_Scripting) _Prevention_Cheat_Sheet) per una buona guida – Basic

+0

Puoi darmi un esempio di iniezione quando uso il codice che mi hai dato? –

1

Il problema è che header("location:index.php"); imposta automaticamente il codice di risposta su 302. Il browser reindirizza immediatamente senza guardare il contenuto della pagina.

È necessario eseguire il reindirizzamento stesso in javascript dopo l'invio dell'avviso oppure la pagina che si sta reindirizzando per effettuare l'avviso.

+0

Grazie, ho pensato ob_start(); ob_end_flush(); stava per risolvere il problema sulla base della lettura di altri post, ma mi sbagliavo. –

-1

Il codice va come:

if($_FILES['file']['size'] > 200000) //any file size, 200 kb in this case 
{ 
echo "<script type='javascript'>alert('File size larger than 200 KB')</script>"; 
} 
header("Location: index.php"); 

Il browser verrà reindirizzato alla pagina di index.php in ogni caso, non importa il file viene caricato o meno con successo. È solo che il popup apparirà se il file è di dimensioni maggiori.

+1

Non penso che funzionerà. L'intestazione deve essere emessa prima di qualsiasi contenuto del corpo e un reindirizzamento 302 fa sì che il browser ignori comunque il contenuto del corpo. –

1
<script type="text/javascript"> 
alert("YOUR MESSAGE HERE"); 
location="REDIRECTION_PAGE.php"; 
</script>