-1

好的,让我简单总结一下。我有两个用 html 制作的文本框。我希望将在那里输入的任何内容存储到两个变量中,但我希望页面做两件事,一是我想设置提交按钮(使用 isset),以便它在开始时不会显示错误。我将如何做到这一点,假设我的两个变量是 $textbox1 和 $textbox2。我得到的错误是第 26 行上的未定义变量,这是我的 HTML textbox2 所在的位置。我还想指出,我的文本框的值也是变量。如果您不明白我的意思,请滚动到代码底部以查看我在说什么。

<?php

if (isset($_POST['submit'])) {
    $textbox1 = $_Post['txtbox1'] && $textbox2=$_POST['txtbox2']; 
    if ($textbox1=="John" && $textbox2="Doe") {
        Print ("Welcome back friend");
    } else {
        print ("You're not a member of this site");
    }
} else {
    $textbox1="" && $textbox2="";
}
print($textbox1 && $textbox2);

?>


<input type="text" value="<?php print($textbox2); ?>" name=txtbox2>
4

4 回答 4

5

&&是一个逻辑运算符。您不能使用它在一行中设置多个变量。所以

$textbox1 = $_Post['txtbox1'] && $textbox2=$_POST['txtbox2'];

应该读

$textbox1 = $_POST['txtbox1'];
$textbox2 = $_POST['txtbox2'];

此外,您在第二个条件中使用赋值 ( =) 而不是相等检查 ( ==)。

if ($textbox1=="John" && $textbox2="Doe") {

应该读

if ($textbox1 == 'John' && $textbox2 == 'Doe') {

同样,在你elseprint()之后,你试图在你不应该使用的时候使用逻辑运算符。在 else 中,将其分成两行,如上所示,在您的print()语句中,您应该使用连接,而不是&&.

我不完全理解您在这里要完成的工作,但这些是我在您的代码中看到的问题。

于 2013-04-19T21:12:08.397 回答
0

你有一个未定义的变量问题,因为$textbox2并不总是定义......当你提交它并$_Post["txtbox1"]在转换为 bool 时评估为 false,因为它永远不会设置为变量在 PHP 中区分大小写($_POST而不是$_Post)然后 $textbox2 赢了'不被定义。

您的行被解析如下:

$textbox1 = (($_Post['txtbox1']) && ($textbox2=$_POST['txtbox2']));

&&只要每个值的计算结果为 ,操作员就会进行检查true。但$_Post['txtbox1']评估为假,因此它永远不会执行该$textbox2=$_POST['txtbox2']部分,$textbox2未分配。

最正确的应该是:

$textbox1 = $_POST['txtbox1'];
$textbox2 = $_POST['txtbox2'];

并在 if 子句中使用:!empty($_POST['txtbox1']) && !empty($_POST['txtbox2'])

于 2013-04-19T21:13:23.843 回答
0
$textbox1=$_Post['txtbox1'];
$textbox2=$_POST['txtbox2']; 

不要这样写

$textbox1=$_Post['txtbox1'] 
&& $textbox2=$_POST['txtbox2']; 

也在else

$textbox1=""; $textbox2="";

if你写道=,这意味着平等。你应该写==这意味着检查它是否等于这个

于 2013-04-19T21:13:56.533 回答
0

您指定的 && 在分配时不起作用。您只能在逻辑条件下使用它。尝试这个 :

$textbox1 = $_Post['txtbox1'];
 $textbox2=$_POST['txtbox2']; 

此外,不要在条件中使用“=”,而是尝试使用“===”这是比较两个字符串时最合适的操作数。

于 2013-04-19T23:33:02.030 回答