好的,让我简要总结一下。我有两个用html制作的文本框。我希望在那里键入的内容存储到两个变量中,但我希望页面做两件事,一,我想设置提交按钮(使用isset),这样它就不会在开头显示错误。我怎么做,假设我的两个变量是$ textbox1和$ textbox2。我得到的错误是未定义第26行的变量,这是我的HTML文本框2所在的位置。我还要注意,我的文本框的值也是变量。如果你不理解我,滚动到代码的底部,看看我在说什么。
<?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>
答案 0 :(得分:5)
&&
是一个逻辑运算符。您不能使用它在一行中设置多个变量。所以
$textbox1 = $_Post['txtbox1'] && $textbox2=$_POST['txtbox2'];
应该阅读
$textbox1 = $_POST['txtbox1'];
$textbox2 = $_POST['txtbox2'];
此外,您在第二个条件中使用了作业(=
)而不是等号检查(==
)。
if ($textbox1=="John" && $textbox2="Doe") {
应该阅读
if ($textbox1 == 'John' && $textbox2 == 'Doe') {
同样,在您的else
和print()
之后,您尝试使用逻辑运算符。在else中,将其拆分为两个单独的行,如上所示,在print()
语句中,您应该使用连接,而不是&&
。
我不完全明白你在这里要完成的任务,但这些是我在你的代码中看到的问题。
答案 1 :(得分:0)
你有一个未定义的变量问题,因为$textbox2
并不总是定义...当你提交它时$_Post["txtbox1"]
在转换为bool时评估为false,因为它永远不会被设置为变量在PHP中区分大小写($_POST
而不是$_Post
),然后不会定义$ textbox2。
您的行解析如下:
$textbox1 = (($_Post['txtbox1']) && ($textbox2=$_POST['txtbox2']));
只要每个值的计算结果为&&
,true
运算符就会进行检查。但$_Post['txtbox1']
评估为false,因此不会永远执行$textbox2=$_POST['txtbox2']
部分,$textbox2
未分配。
最正确的是:
$textbox1 = $_POST['txtbox1'];
$textbox2 = $_POST['txtbox2'];
并在if子句中使用:!empty($_POST['txtbox1']) && !empty($_POST['txtbox2'])
答案 2 :(得分:0)
$textbox1=$_Post['txtbox1'];
$textbox2=$_POST['txtbox2'];
不要像这样写
$textbox1=$_Post['txtbox1']
&& $textbox2=$_POST['txtbox2'];
也在else
$textbox1=""; $textbox2="";
你在if
编写了=
,这意味着平等。你应该写==
,这意味着检查它是否等于这个
答案 3 :(得分:0)
&amp;&amp;您指定的分配不起作用。 您只能在逻辑条件下使用它。 试试这个:
$textbox1 = $_Post['txtbox1'];
$textbox2=$_POST['txtbox2'];
此外,不要在条件中使用“=”,请尝试使用“===” 比较两个字符串时,这是最合适的操作数。