PHP:如何在另一个 if 语句中使用变量

标签 php variables if-statement statements

单独的形式还可以,但组合起来……就不行了。困难在于我无法从第二个 if 语句中的第一个 if 语句访问变量 $name
错误: undefined variable :名称

html:

<form method="POST" enctype="multipart/form-data" id="form1">
Name: <input type="text" name="name"><br>
Pass: <input type="password" name="pass"><br>
<input type="submit" name="submit1" value="Влез">
</form>

<form method="POST" enctype="multipart/form-data" id="form2">
    We need some more information about you<br>
    Please enter your e-mail: <input type="text" name="email"><br>
    Please enter a new Password <input type="password" name="pass1" ><br>
    Plese reenter tour new password <input type="password" name="pass2"><br>
    <input type="submit" name="submit2" value="Save">
</form>

php:

require('config.php');
?><script type="text/javascript">document.getElementById("form2").style.display="none"; </script><?php
       if(isset($_POST['submit1']))
    {
        $name = mysql_escape_string($_POST['name']);
        $pass = mysql_escape_string($_POST['pass']);
        //chek if the username and password are correct
        $check = mysql_query("SELECT * FROM test WHERE name = '$name' AND pass = '$pass'");
        if(mysql_num_rows($check) >= 1)
        {

            ?>
            <script type="text/javascript">
            document.getElementById("form1").style.display="none";
            document.getElementById("form2").style.display="block";
            </script>
            <?php
            exit();
        }
        else echo "<h1><font color='red'> Грешно Име или Парола</font></h1>";
    }



    if(isset($_POST['submit2']))
    {
        $email = mysql_escape_string($_POST['email']);
        $pass1 = mysql_escape_string($_POST['pass1']);
        $pass2 = mysql_escape_string($_POST['pass2']);

        $checkpass = mysql_query("SELECT * FROM test WHERE pass = '$pass1'")or die(mysql_error());


        if($pass1 != $pass2){
            echo "Passwords do not Match";
        }

        elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
            echo "Wrong email format";
        }

        elseif (mysql_num_rows($checkpass)>=1) {
            echo "Password already taken";
        }

        elseif (empty($pass1) || empty($pass2) || empty($email)) {
            echo "Not all fields are filled";
        }

        else
        {
            //put in DB
            mysql_query("UPDATE test SET pass='$pass1' WHERE name='$name'") or die(mysql_error());
            mysql_query("UPDATE test SET email='$email' WHERE name='$name'") or die(mysql_error());

            ?><script type="text/javascript">
            document.getElementById("form1").style.display="none";
            document.getElementById("form2").style.display="none";
            </script><?php
            echo "<h1><font color='green'>Registration successful</font></h1>";
        }
    } 

P.S不介意里面的java脚本,不,我不能组合表单!

最佳答案

您无法访问第二个 if 语句中的 $name 变量的原因是表单结构所致。您有两份不同的表格,但任何时候只能提交其中一份。因此,您的 if 语句只能处理其中一种表单,即 submit1submit2。最简单的解决方案可能是将两种形式和您的 if 语句结合起来。然后,您将需要更多 if 语句来检查已提供哪些信息以及应处理哪些信息。

奖金

您的其中一份表格的名称不是英文。使用英语编写代码是一种很好的做法,因为其他不熟悉您的语言的开发人员会阅读您的代码(就像我们现在所做的那样)。如果其他人想在互联网上研究您的实现,这也会对其有所帮助。

我还建议检查关注点分离。到目前为止,您的代码混合了表示逻辑和域逻辑( Action 处理内容)。这可能看起来令人难以承受,但我可以向您保证,这是一项您将来会喜欢的投资。

祝你编码愉快!

关于PHP:如何在另一个 if 语句中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31256546/

相关文章:

c++ - 如何在 C++ 中存储从 vector `pop_back()` 获得的值?

java - 为什么我的 FizzBu​​zz 代码在两个 if 语句都匹配时不处理它们?

php - 如何在PHP中找到重叠的日期期限/日期范围?

php - 使用 > 符号拆分关联数组并将其显示在列表 ion php 中

php - 使用 PHP 将缩略图显示为指向 MySQL 数据库中组织的图像的链接

Javascript - 将变量存储为对象和函数

objective-c - Objective-C程序中的全局变量

linux - (UNIX) fork() 如何在循环中工作?

javascript - 需要帮助重构此 Javascript if/else 语句

javascript - 数据插入有效,但不显示警报框消息