2013-03-27 125 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