草庐IT

php - 提交后保留字段值

coder 2023-10-10 原文

我需要此表单的操作来调用我的脚本,然后如果电子邮件地址已经在数据库中,它应该显示警报。

这有效,但显然我被定向到我的空白脚本页面,当我返回表单时,数据消失了。

我想被重定向到数据完整的表单并显示警报。

我一整天都在尝试让 session 正常工作,但现在我很困惑。

如果有人能告诉我在每个页面添加 session 代码的内容和位置,我将不胜感激。

此页面包含我的表单:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>Untitled Document</title>

    <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js'></script>
    <script src='http://ajax.microsoft.com/ajax/jquery.validate/1.7/additional-methods.js'></script>
    <script src='http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.js'></script>

    <script src="../js/register_validate.js" type="text/javascript"></script>

    <link href="../css/styles.css" rel="stylesheet" type="text/css">

    <base target="_top">
</head>

<body>

    <p><?php include ('register_form2.php') ?></p>                    

</body>
</html>

这是包含的表单页面:

<form action="register_script2.php" method="POST" name="form_register" id="form_registerID" accept-charset="UTF-8">

    <aside class="field_reg_form">

    <input name="field_email1" type="text" required id="field_email1ID" /><br /><br />
    <input name="field_email2" type="text" required id="field_email2ID" /><br /><br />
    <input type="submit" value="submit" id="submit" name="submit" />

    </aside>


</form>

这是 PHP 脚本:

<?php

require_once('../scripts/connect.php');

$con = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME) or die('Could not connect to database server.');

if(isset($_POST['submit'])) {

    $var_Email1 = mysqli_real_escape_string($con, $_POST['field_email1']);
    $var_Email2 = mysqli_real_escape_string($con, $_POST['field_email2']);

        if ($var_Email1 == $var_Email2){

            $sql = mysqli_query($con, "SELECT * FROM membership WHERE Email = '$var_Email1' "); 

                if(mysqli_num_rows($sql) > 0 ){
                    print '<script type="text/javascript">'; 
                    print 'alert("The email address '. $_POST['field_email1'].' is already in our database")'; 
                    print '</script>'; 
                      exit();
                }

        echo "not in database";
   }

}
?>

最佳答案

是的,您可以在这种情况下实现(某种)Flash session :

因此在提交时:

<?php

session_start(); // don't forget
require_once('../scripts/connect.php');

$con = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME) or die('Could not connect to database server.');

if(isset($_POST['submit'])) {

    $var_Email1 = mysqli_real_escape_string($con, $_POST['field_email1']);
    $var_Email2 = mysqli_real_escape_string($con, $_POST['field_email2']);

    if ($var_Email1 == $var_Email2){

        $sql = mysqli_query($con, "SELECT * FROM membership WHERE Email = '$var_Email1' "); 
        if(mysqli_num_rows($sql) > 0){
            // set session
            $_SESSION['email_exists'] = $var_Email1;
            header('Location: the_starting_php.php');
            exit;
        }
    }

    echo "not in database";

}
?>

然后在表单页面中也添加:

<?php
session_start();

// check if there is
$email = '';
if(isset($_SESSION['email_exists'])) {
    $email = $_SESSION['email_exists'];
    unset($_SESSION['email_exists']); // unset it
    echo "
      <script type='text/javascript'>
      alert('The email address $email already exists');
      </script>
    ";
}

?>


<form action="register_script2.php" method="POST" name="form_register" id="form_registerID" accept-charset="UTF-8">

    <aside class="field_reg_form">
          <input name="field_email1" type="text" required id="field_email1ID" value="<?php echo $email; ?>" />
          <br /><br />
          <input name="field_email2" type="text" required id="field_email2ID" value="<?php echo $email; ?>" />
          <br /><br />
          <input type="submit" value="submit" id="submit" name="submit" />
    </aside>

</form>

旁注:我建议使用准备好的语句。

<?php

session_start(); // don't forget
require_once('../scripts/connect.php');

$con = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME) or die('Could not connect to database server.');

if(isset($_POST['submit'])) {

    $var_Email1 = $_POST['field_email1'];
    $var_Email2 = $_POST['field_email2'];

    if ($var_Email1 == $var_Email2){

        $sql = 'SELECT * FROM membership WHERE Email = ?'; 
        $select = $con->prepare($sql);
        $select->bind_param('s', $var_Email1);
        $select->execute();
        if($select->num_rows > 0){
            // set session
            $_SESSION['email_exists'] = $var_Email1;
            header('Location: the_starting_php.php');
            exit;
        }
    }

    echo "not in database";

}
?>

关于php - 提交后保留字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26706179/

有关php - 提交后保留字段值的更多相关文章

  1. git使用常见问题(提交代码,合并冲突) - 2

    文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g

  2. ruby-on-rails - 如何在 Rails 中添加禁用的提交按钮 - 2

    我在ruby​​表单中有一个提交按钮f.submitbtn_text,class:"btnbtn-onemgt12mgb12",id:"btn_id"我想在不使用任何javascript的情况下通过ruby​​禁用此按钮 最佳答案 添加disabled:true选项。f.submitbtn_text,class:"btnbtn-onemgt12mgb12",id:"btn_id",disabled:true 关于ruby-on-rails-如何在Rails中添加禁用的提交按钮,我们在St

  3. ruby-on-rails - 在 rails 中提交后回滚事务 - 2

    保存成功后可以回滚吗?让我有一个带有属性名称、电子邮件等的用户模型。例如u=User.newu.name="test_name"u.email="test@email.com"u.save现在记录将成功保存在数据库中,之后我想回滚我的事务(不是销毁或删除)。有什么想法吗? 最佳答案 您可以通过交易来做到这一点,请参阅http://markdaggett.com/blog/2011/12/01/transactions-in-rails/例子:User.transactiondoUser.create(:username=>'Nemu

  4. ruby-on-rails - 这个 C 和 PHP 程序员如何学习 Ruby 和 Rails? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它

  5. ruby - 如何以编程方式使用 Rugged 创建提交? - 2

    我正在尝试使用Rugged以编程方式创建对现有存储库的提交(libgit2的Ruby绑定(bind))。我已尝试遵循RuggedREADME中提供的文档,但我认为它与代码库的当前状态不太匹配。当我尝试运行以下代码时,我不断收到错误消息:require'rugged'#Createaninstanceoftheexistingrepositoryrepo=Rugged::Repository.new('/full/path/to/repo')#grabthecurrentTimeobjectfornowcurr_time=Time.now#writeanewblobtothereposi

  6. ruby - 为什么 Ruby 在抛出 NameError 异常后仍保留代码求值? - 2

    我无法向自己解释的简单代码:putsaifa=1这导致warning:found=inconditional,shouldbe==NameError:undefinedlocalvariableormethod'a'formain:Object不过,现在检查a我们可以看到,它已被定义:a#=>1尽管抛出异常,为什么a仍被分配给1?来自docs:Theconfusioncomesfromtheout-of-orderexecutionoftheexpression.Firstthelocalvariableisassigned-tothenyouattempttocallanonexis

  7. ruby - git:从 bitbucket 导出并导入 github(带提交) - 2

    我在bitbucket上创建了一个私有(private)git存储库并提交了代码。现在我想导出所有(提交、代码、历史记录)并将其导入github上的gitrepo。有没有办法做到这一点?谢谢 最佳答案 在本地检查所有内容到您的计算机和gitpull。创建一个github存储库将此存储库添加为您的第二个远程(“使用gitremote添加githubURL”)推送到第二个Remote 关于ruby-git:从bitbucket导出并导入github(带提交),我们在StackOverflow

  8. ruby-on-rails - 常量化通过浏览器提交的参数是不好的做法吗? - 2

    我有一个单表继承设置,我有一个Controller(我觉得有多个Controller会重复)。但是,对于某些方法,我想调用模型的子类。我想我可以让浏览器发送一个参数,我会针对该参数编写一个case语句。像这样的东西:case@model[:type]when"A"@results=Subclass1.search(params[:term])when"B"@results=Subclass2.search(params[:term])...end或者,我了解到Ruby的所有技巧都可以用字符串创建模型。像这样的东西:@results=params[:model].constantize.

  9. ruby - 从用户提交的文本中提取关键字的好方法是什么? - 2

    我正在构建一个网站,该网站允许用户通过以图形方式表示支持和反对特定问题的论点来理解辩论。(Wrangl)我想对这些辩论进行分类,以便更容易找到它们并将它们联系起来。我不想让发起辩论的人在他们看到任何好处之前添加标签和类别,从而激怒他们,所以我正在寻找一种自动提取关键字的方法。有什么好的方法可以利用辩论的标题和描述(以及可能的论点本身的内容,一旦有的话)来提取,比如说,可以用作元数据将类似辩论联系在一起的十个强关键字,或者即使是在可以查看辩论的HTML页面头部的“元”关键字标记的内容。例如。DatamappervsActiveRecord该网站使用Ruby和Sinatra编码,使用Dat

  10. ruby - whenever gem 能否保留 crontab 文件中的现有行? - 2

    我正在使用:ruby1.9.2每当0.7.2Capistrano2.9.0capistrano-ext1.2.1我在部署时与Capistrano结合使用来管理我的crontab文件。我注意到它每次都会完全重写我的crontab文件。我希望能够在cron中设置环境变量来控制PATH和MAILTO设置,它们是常规的cron环境变量。有没有办法让whenever不覆盖整个crontab文件,以便我可以将自定义添加到我的crontab文件并确保它们会持续存在? 最佳答案 是的,你可以做到这一点。您只需要为写入crontab的任务分配一个标识

随机推荐