【问题标题】:After alert it will stay on the same page警报后它将保持在同一页面上
【发布时间】:2017-11-10 17:44:08
【问题描述】:

我在注册页面上需要帮助。我提醒用户查看所有字段都是必需的。我的问题是每次我在警报上单击“确定”时,它都会重定向到 signupMysql.php,这是一个空白页面。我想要的是只要一些字段不完整,它就留在 signup.php 上。

我认为操作与我的问题有关。

这是我的 signup.php

<form class="register-form" action="signupMysql.php" method="post">
  <p class="message">Don't have an account?</p>
  <input type="text" placeholder="Username" name="username">
  <input type="text" placeholder="Last Name" name="lastname">
  <input type="text" placeholder="First Name" name="firstname">
  <input type="text" placeholder="Contact Number" name="contactnum">
  <input type="text" placeholder="Email address" name="email">
  <input type="password" placeholder="Password" name="password">
  <input type="password" placeholder="Re-enter Password" name="repassword">
  <input type="Submit" value="Sign Up">

</form>

我的signupMysql.php

的一些代码
if (empty($username) || empty ($lastname) || empty($firstname) || 
empty($contactnumber) || empty($email) 
|| empty ($password) || empty ($repassword)){

$message = "Fill all fields";
echo "<script type='text/javascript'>alert('$message');</script>";


}

我希望有人可以帮助我。非常感谢您。

【问题讨论】:

  • alert('ok') 代码在哪里?
  • 为此你应该做 jquery 表单验证
  • 将您的 signupMysql.php 代码放入您的 signup.php。然后在所有文件都有效时重定向...

标签: javascript php alert


【解决方案1】:

在表单中,尝试添加required 属性。例如;

<input type="text" placeholder="Username" name="username" required/>

这将阻止用户提交空值。

另外,alert() 不会阻止它们,因为它只是显示信息而不做任何其他事情

【讨论】:

  • 这是一个附加答案。仍然有人可以禁用 JS,所以仍然需要 PHP 验证...
  • @Jonasw,我同意 PHP 验证很好,如果您必须在提交之前执行更多的检查和平衡,并且您不只是在寻找空字段,而是为什么要麻烦。
  • 密码 || 用户名 || email ... 只是做 JS 验证可以让用户弄乱你的数据库/登录系统,这不好...
  • @Jonasw,问题是关于通知用户某些字段为空的方法,而不是在除此之外需要进一步验证。盘点我之前的评论。
【解决方案2】:

请在 signupMysql.php 中的 echo 之后再添加一条语句

header("location:signup.php");

如果您严格希望通过 PHP 完成验证,那么您可以使用此代码。此外,如果您希望在实际提交表单之前完成,您可以使用 Douglas Hosea 提供的代码。

希望对您有所帮助!万事如意!

【讨论】:

  • 如果您添加一种显示“缺少字段”警报的方法,这可能是最佳答案...
  • 感谢@Jonasw 的赞赏,根据问题中编写的代码,开发人员正在一次检查所有字段的条件并抛出一个常见的警报对话框。如果要求检查所有字段都需要什么,那么我们需要获取一个变量并分别检查每个字段的条件,并在变量后面附加正确的错误消息。 :)
【解决方案3】:

您的问题是您的表单正在提交并且您被带到您进行验证的下一页。如果您不希望用户在表单未完成时离开页面,则需要在浏览器中使用 JavaScript 和/或 HTML5 进行一些表单验证。

您可以使用 JavaScript 阻止表单提交:How to prevent form from being submitted?

或者您可以查看 HTML5 表单验证和“必需”属性:Required attribute HTML5 https://www.w3schools.com/tags/att_input_required.asp

【讨论】:

  • 这是一个附加答案。仍然有人可以禁用 JS,所以仍然需要 PHP 验证...
【解决方案4】:

试试下面的代码,它是你想要的。

if (empty($username) || empty ($lastname) || empty($firstname) || 
            empty($contactnumber) || empty($email) 
            || empty ($password) || empty ($repassword))
        { 
           $_SESSION['messege'] = "Fill all fields";
           header("location:signup.php");
        }

在你的 signup.php 中

<?php if(isset($_SESSION['messege']) &&  $_SESSION['messege'] != ''){
echo "<script type='text/javascript'>alert('$_SESSION['messege']');</script>";
}?>

【讨论】:

    【解决方案5】:

    您可以在发布到服务器之前验证表单。

    表单“提交”事件可以通过javascript处理(你可以google一下jquery怎么做)

    这是没有任何库的解决方案(在表单后面添加此代码):

    <script>
    document.getElementsByTagName('form')[0].addEventListener('submit', function(evt){
        if(document.getElementsByName("email")[0].value == "") {
           alert("You forgot to enter email!");
           evt.preventDefault();
        }
        /// .... put other checks here
    })
    </script>
    

    注意:evt.preventDefault() 将阻止您的表单发布

    【讨论】:

    • 这是一个附加答案。仍然有人可以禁用 JS,因此仍然需要 PHP 验证...另外请查看 window.onloaddocument.forms
    • @Jonasw,没有 javascript “alert” 也不起作用)并且服务器上的验证是必须的,同意,但主要是出于安全目的,而不是为了“通知用户”目的,而且 imo 这也是一个很好的练习尽可能减少服务器调用。
    【解决方案6】:

    我认为你需要这样的东西:

    <form class="register-form" id="myform" action="signupMysql.php" method="post">
    ...
      <input type="button"  onclick="subme()" value="Submit Form">
    </form>
    

    对于 javascript 代码:

    function subme(){
        var inputs = document.getElementsByTagName('input');
        for (var i = 0; i < inputs.length; i += 1) {
            if(inputs[i].value == ''){
                 alert("All field must be filled")
                 exit()
            }
        }​​​​
        document.getElementById("myForm").submit()
    }
    

    【讨论】:

    • 这是一个附加答案。仍然有人可以禁用 JS,所以仍然需要 PHP 验证...
    • 是的,但是如果你禁用 javascript 你就不能提交
    • 我可以...(您只需去检查员并删除所需的...)
    • 当然...但很不寻常...如果您想要最大程度的保护,您需要服务器端检查
    猜你喜欢
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    相关资源
    最近更新 更多