2012-07-28 5 views
5

Ich bin neu in PHP.PHP: Alarm Popup geben dann die Seite umleiten

Wenn jemand eine zu große Datei hochlädt, möchte ich ihnen ein Warn-Popup anzeigen und sie auf eine vorherige Seite umleiten (oder umgekehrt).

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;  
} 

Dieser Code oben wird mir nur zu index.php umleiten und zeigt keine Warnung Popup.

Antwort

9

Sie so etwas wie

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

Dann auf index.php ...

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

Mit anderen Worten, index.php wird immer überprüfen, ob es eine Nachricht in der URL übergeben werden wird. Wenn es eines gibt, zeigen Sie es an. Dann geben Sie einfach die Nachricht in der Umleitung

, wenn Sie wirklich ein modales Popup verwenden möchten, erzeugen die js ...

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

Beachten Sie, dass diese brechen, wenn Sie Anführungszeichen in der Nachricht, es sei denn Sie verwenden entkommen sie

+0

Das ist perfekt danke. Ich frage mich, ob ich mich um Code-Injektion kümmern muss, da Benutzer kann eingeben, was sie wollen, in der Nachricht. –

+0

Ja - Siehe [diese Seite] (https://www.owasp.org/index.php/XSS_ (Cross_Site_Scripting) _Prevention_Cheat_Sheet) für eine gute Anleitung – Basic

+0

Können Sie mir ein Beispiel für eine Injektion geben, wenn Sie den Code verwenden, den Sie mir gegeben haben? –

1

Das Problem ist, dass header("location:index.php"); den Antwortcode auf 302 automatisch setzt. Der Browser leitet sofort um, ohne auf den Inhalt der Seite zu schauen.

Sie müssen entweder die Umleitung selbst in Javascript durchführen, nachdem die Warnung gesendet wurde, oder die Seite, die Sie umleiten, um die Warnung auszuführen.

+0

Danke, ich dachte ob_start(); ob_end_flush(); Ich wollte das Problem beheben, indem ich andere Beiträge gelesen habe, aber ich lag falsch. –

-1

Der Code geht so:

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"); 

Der Browser sowieso index.php Seite umgeleitet werden, ganz gleich, die Datei erfolgreich hochgeladen oder nicht. Es ist nur so, dass das Popup erscheint, wenn die Datei größer ist.

+1

Ich glaube nicht, dass das funktionieren wird. Der Header muss vor jedem Body-Inhalt ausgegeben werden, und eine 302-Weiterleitung veranlasst den Browser, Body-Content zu ignorieren. –

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