PHP isset()用法

时间:2013-04-19 21:05:24

标签: php html

好的,让我简要总结一下。我有两个用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>

4 个答案:

答案 0 :(得分: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()语句中,您应该使用连接,而不是&&

我不完全明白你在这里要完成的任务,但这些是我在你的代码中看到的问题。

答案 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']; 

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