2013-03-27 199 views
1

這裏有一個簡單的問題:PHP中的彈出窗口?

你如何讓你的錯誤處理在PHP中彈出一個窗口? 是唯一的方法來做到這一點或有沒有辦法在PHP中做到這一點?

我有一個PHP文件,和代碼行之一是:

echo implode('<br />', $errors); 

這行代碼捕獲所有的錯誤,從我的表單來的,如下:

if (strlen($_POST['name'])<3) $errors[] = 'De naam van uw bedrijf moet minstens 3 letters bevatten'; 
    if (strlen($_POST['number'])<9) $errors[] = 'Uw nummer moet minstens 9 nummers bevatten'; 
    if (!preg_match($regexp_mail, $_POST['email'])) $errors[] = 'Onjuist E-mailadres'; 

當有人按我的表單提交時,錯誤將顯示在一個單獨的頁面上,我想在彈出窗口中顯示。 預先感謝您

+0

如果我提交表單並且我有一個彈出式窗口攔截器會阻止您的網站製作窗口,會發生什麼情況?或者我有JS關閉? – 2013-03-27 13:08:14

+0

優秀的點,沒有想到,嗯,任何想法如何我可以保持我的錯誤處理在同一頁上? – CodeSigns 2013-03-27 13:12:09

+0

通過錯誤處理?你的意思是報告致命的,通知,用戶,警告,折舊的錯誤?或HTML表單中的錯誤未正確填寫? – 2013-03-27 13:13:43

回答

3

對於彈出式JavaScript是必需的。把這個在你的頭:

<script> 
function myFunction() 
{ 
alert("I am an alert box!"); // this is the message in "" 
} 
</script> 

這在你的身體:

<input type="button" onclick="myFunction()" value="Show alert box"> 

當按下該按鈕盒在頭設置的信息彈出。

這可以放在任何HTML或PHP文件沒有PHP標籤。

----- -----編輯

使用PHP嘗試此顯示出來:

<?php echo '<script>myfunction()</script>'; ?> 

它可能不是100%正確的,但原理是一樣的。

要顯示不同的消息,您可以創建大量函數,也可以在調用函數時將一個變量傳遞給該函數。

+0

謝謝,非常有幫助,但是,我需要回顯我的錯誤處理從我的PHP文件顯示在警告框中:) – CodeSigns 2013-03-27 13:13:11

+0

所有你需要做的就是使用php調用函數:echo'';這可能不是100%正確的,但原理是一樣的。 – NoLiver92 2013-03-27 13:15:18

+0

thx,問題解決了! – CodeSigns 2013-03-27 13:24:24

5

您必須使用JS才能打開彈出窗口,儘管您可以使用PHP有條件地將它放在頁面上,您是對的,您必須使用JavaScript函數。

0

PHP運行在服務器端,因此您必須使用能夠顯示彈出窗口的JavaScript客戶端技術。

所以你應該通過PHP輸出一個特定的JS塊,如果你的表單包含錯誤並且你想顯示那個彈出。

1
if (isset($_POST['Register'])) 
    { 
     $ErrorArrays = array(); //Empty array for input errors 

     $Input_Username = $_POST['Username']; 
     $Input_Password = $_POST['Password']; 
     $Input_Confirm = $_POST['ConfirmPass']; 
     $Input_Email = $_POST['Email']; 

     if (empty($Input_Username)) 
     { 
      $ErrorArrays[] = "Username Is Empty"; 
     } 
     if (empty($Input_Password)) 
     { 
      $ErrorArrays[] = "Password Is Empty"; 
     } 
     if ($Input_Password !== $Input_Confirm) 
     { 
      $ErrorArrays[] = "Passwords Do Not Match!"; 
     } 
     if (!filter_var($Input_Email, FILTER_VALIDATE_EMAIL)) 
     { 
      $ErrorArrays[] = "Incorrect Email Formatting"; 
     } 

     if (count($ErrorArrays) == 0) 
     { 
      // No Errors 
     } 
     else 
     { 
      foreach ($ErrorArrays AS $Errors) 
      { 
       echo "<font color='red'><b>".$Errors."</font></b><br>"; 
      } 
     } 
    } 

?> 

    <form method="POST"> 
     Username: <input type='text' name='Username'> <br> 
     Password: <input type='password' name='Password'><br> 
     Confirm Password: <input type='password' name='ConfirmPass'><br> 
     Email: <input type='text' name='Email'> <br><br> 

     <input type='submit' name='Register' value='Register'> 


    </form> 

這是一個非常基本的PHP表單驗證。這可以放在try區塊中,但對於基本參考,我認爲這符合我們在評論框中的對話。

什麼這個腳本會做什麼,是過程的每個崗位的元素,並採取相應的行動,例如:

if (!filter_var($Input_Email, FILTER_VALIDATE_EMAIL)) 
     { 
      $ErrorArrays[] = "Incorrect Email Formatting"; 
     } 

這將檢查:

如果$ Input_Email是不是一個有效的電子郵件。如果這不是有效的電子郵件,則會將消息添加到空數組中。

再往下的腳本,您將看到:

if (count($ErrorArrays) == 0) 
    { 
     // No Errors 
    } 
    else 
    { 
     foreach ($ErrorArrays AS $Errors) 
     { 
      echo "<font color='red'><b>".$Errors."</font></b><br>"; 
     } 
    } 

基本上。如果數組數不爲0,則發現錯誤。然後腳本會打印出錯誤。

請記住,這是一個基於我們在評論框中的對話的參考,應該這樣使用。

+0

是的,我們在這裏相同的頁面上,只是在評論中略微忽略了我們的意思。友情提示:在if中使用> over ==會使您將控制結構壓縮爲if(condition){foreach(errors {...}},而不是具有額外的其他塊。雖然 – jimcavoli 2013-03-27 13:35:18

+0

@ jimcavoli得到了你來自哪裏,但我在一個基本的程序員委員會,所以我需要愚蠢的代碼,直到他們學習更簡單的方法,爲什麼我不教他們?習慣繼續沿襲,但是是的,這是你在找什麼? – 2013-03-27 13:37:21

+0

是的,謝謝你,這樣做會更好! – CodeSigns 2013-03-27 13:44:36