使用PHP和JavaScript显示警告框

4
if (!(isset($_POST['fullname']) && strlen($_POST['fullname']))) {
  echo 
  "<script type=\"text/javascript\">".
  "window.alert('You must enter your full name.');".
  "</script>"; 

   exit;             
}

上面的代码在register.php文件中。我在index.html中有一个html表单。当我提交没有full name的表单时,它会显示alert但是页面卡在register.php(空白页面)。 我想在index.html页面上显示alert或者至少重定向到index.html。 怎么做?
10个回答

3
尝试在

0

这样做:

if (!(isset($_POST['fullname']) && strlen($_POST['fullname']))) {
  echo 
  "<script type=\"text/javascript\">".
  "window.alert('You must enter your full name.');".
  "top.location = 'index.html';".
  "</script>"; 

   exit;             
}

这将导致重定向在警告框被关闭后发生,这可能会让用户感到困惑(尽管这可能是他期望的效果,谁知道呢)。我会在服务器端执行重定向。 - ElGavilan
2
也许是这样,但他们仍然需要学习。新手不能永远都是新手。 - ElGavilan
1
是的,我仍在学习中。但如果您能提出建设性批评,那将是非常好的。 - HungryDB

0

做一件事... 将这个 if 条件放在同一页上。并且在同一页上提交你的表单。 这是一个更好的主意。如果你不需要 register.php 文件出于其他原因。 可以通过以下方式完成

windows.location("index.php").

但这不是一个好的方式。


0
<?php
if (!(isset($_POST['fullname']) && strlen($_POST['fullname']))) {
    echo
        "<script type=\"text/javascript\">".
        "window.alert('You must enter your full name.');".
        'window.location.href="index.html";'.
        "</script>";

    exit;
}

0
当你使用PHP提交表单时,它会将浏览器重定向到该页面。为什么不在提交表单之前弹出错误消息?这是一个简短的例子:
<form name="contactForm" action="register.php">
    <label for="name" id="name_label">Name</label>  
    <input type="text" name="name" id="name" />  
    <input type="submit" name="submit" class="button" id="submit_btn" value="Send" />
</form>

<script>
    $(function() {  
        $('#contactForm').on('submit', function() {  
            // validate and process form here
            if( !$("#name").val() ) {  
                alert('You must enter a valid name!');
                return false;
            }
        });  
    });
</script>

1
客户端验证总是很好的形式,但一个完全健全的应用程序必须在事后也在服务器端进行验证。 - ElGavilan
非常好的观点!+1 对于冗余安全性,但只是想让 OP 看到 JQuery 表单验证的优点。 - Pastor Bones
是的,我从某个地方听说过不应该使用JS进行任何验证,因为用户可以控制JS的开启/关闭。这是真的吗?(我对JS和jQuery完全不熟悉) - HungryDB
@HungryDB - 这是真的,但客户端验证可以提供更清晰的用户体验,正如ElGavilan在上面指出的那样,您也应该始终在服务器端进行验证以防止任何黑客攻击。 - Pastor Bones

0
你需要完全在客户端执行此操作 - 甚至不需要访问服务器即可确定是否填写了fullname字段。
在注册页面上尝试类似以下的操作:
<form id="myform" action="register.php" method="post">
    Full Name: <input type="text" name="fullname" />
    <input type="submit" value="Submit" />
</form>

<script type="text/javascript">
document.getElementById('myform').onsubmit=function(){
    if(!this.fullname.value) {
        alert("You must enter your full name")
        //stop form submission
        return false
    }
    //continue on to register.php
    return true
}
</script>

可工作的 JS Fiddle:

http://jsfiddle.net/GAk8C/


0

我认为您正在进行字段验证。 最好在index.html页面中进行简单的验证。 在您的html代码中,将以下内容添加到index.html页面中的提交按钮中:

<input type="submit" name="submit" value="yourvalue" onclick="return validateName()">

并使用JavaScript验证方法

<script language="javascript" >
function validateName(){
if(document.getElementById("idOfFirstNameField").value==""){
alert("Please enter your name");
document.getElementById("idOfFirstNameField").focus();
return false;   
    }   

    }
</script>

0
更好的方法是,在index.html本身上提供javascript。因此,当用户不输入全名时,它将不会重定向到register.php。它将停留在同一页上,并显示警告错误消息,即在index.html上。
在HTML的头部放置如下内容:
<head>
function validate(){
     fname=document.getElementByID('fname').value;
     if (fname==""){
         alert("Please provide full name.");
         return false;
     }else{
         window.location.href = 'register.php';
     }
}
</head>
<body>
      <form name="adminform" src="register.php" onsubmit="return validate();">
      <input type="text" id="fname" name="fname" value=""/>
      </form>
</body>

如果用户输入了全名,则会重定向到register.php。

0

0

我的做法。在 register.php 文件中:

<?php session_start();

if((empty($_POST['name'])) || (empty($_POST['email'])) || (empty($_POST['subject'])) || (empty($_POST['message']))) {
    $_SESSION['mensaje']="<script language=\"javascript\">alert('All fields are mandatory')</script>";
    header("Location: ../contact.php");
    exit;
  }

而在文件的第一行,如果出现错误(在这种情况下是contact.php),您将重定向到该文件。

<?php session_start();
if(isset($_SESSION['mensaje'])){
  echo $_SESSION['mensaje'];
}
session_destroy();?>
<!DOCTYPE html>

同样的方法也可以用来显示成功信息。希望能对您有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接