PHP我的页面在使用isset()后没有显示任何内容
我有一个index.php,它基本上显示HTML内容。一切都很顺利,直到我放了一个表单和一个if语句来检查是否按下了submit按钮 现在这一页完全是空白的。在浏览器中检查源代码,即使HTML标记也不存在。如果我删除的是设置部分,我会得到一个未定义的索引fname。。。错误PHP我的页面在使用isset()后没有显示任何内容,php,forms,class,Php,Forms,Class,我有一个index.php,它基本上显示HTML内容。一切都很顺利,直到我放了一个表单和一个if语句来检查是否按下了submit按钮 现在这一页完全是空白的。在浏览器中检查源代码,即使HTML标记也不存在。如果我删除的是设置部分,我会得到一个未定义的索引fname。。。错误 <?php require_once 'config/autoload.php'; if (isset($_POST['submit'])) { $fname = clean_data
<?php require_once 'config/autoload.php';
if (isset($_POST['submit'])) {
$fname = clean_data($_POST['fname']);
$lname = clean_data($_POST['lname']);
$your_question = clean_data($_POST['question']);
try {
$homepage = new Page;
$author = new Author($fname, $lname);
$question = new Question($your_question, $author);
} catch (Exception $e) {
echo $e->getMessage(), '<br>';
exit;
}
$homepage->content = <<<_END
<p>Hello {$author->getFirstName()} {$author->getLastName()}!</p><br>
<p>You ask: {$question->getQuestion()}</p>
<form action="{$_SERVER['PHP_SELF']}" method="post" role="form">
<label for="fname">Enter your first name</label><br>
<input type="text" id="fname" name="fname" size="30"><br>
<label for="lname">Enter your last name</label><br>
<input type="text" id="lname" name="lname" size="30"><br>
<label for="question">What is your question?</label><br>
<textarea id="question" name="question" rows="10" cols="70"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>
_END;
$homepage->display();
}
function clean_data($data)
{
$data = trim($data);
$data = strip_tags($data);
$data = addslashes($data);
return $data;
}
从我看到的情况来看,您希望将表单移到if子句之外,因为现在您正在询问表单是否已提交,然后执行一些操作,但由于您正在检查的表单位于if子句之内,因此它将永远不会显示。那就这样做吧
if(isset($_POST['submit'])){
<php code>
}
<INSERT FORM HERE>
if(isset($\u POST['submit'])){
}
更新2
一般的问题是,代码试图访问尚未设置的变量,因为看起来你们都试图显示用户的问题,并允许他提出问题,同时我会正确地执行类似的操作
$fname = isset($_POST['fname']) ? clean_data($_POST['fname']) : NULL;
$lname = isset($_POST['lname']) ? clean_data($_POST['lname']) : NULL;
$your_question = isset($_POST['question']) ? clean_data($_POST['question']) : NULL;
try {
$homepage = new Page;
$author = new Author($fname, $lname);
$question = new Question($your_question, $author);
} catch (Exception $e) {
echo $e->getMessage(), '<br>';
exit;
}
$homepage->content = <<<_END
<p>Hello {$author->getFirstName()} {$author->getLastName()}!</p><br>
<p>You ask: {$question->getQuestion()}</p>
<form action="{$_SERVER['PHP_SELF']}" method="post" role="form">
<label for="fname">Enter your first name</label><br>
<input type="text" id="fname" name="fname" size="30"><br>
<label for="lname">Enter your last name</label><br>
<input type="text" id="lname" name="lname" size="30"><br>
<label for="question">What is your question?</label><br>
<text area id="question" name="question" rows="10" cols="70"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>
_END;
$homepage->display();
$fname=isset($\u POST['fname'])?清除数据($\u POST['fname']):空;
$lname=isset($\u POST['lname'])?清除数据($\u POST['lname']):空;
$your_question=isset($_POST['question'])?清理数据($_POST['question']):空;
试一试{
$homepage=新页面;
$author=新作者($fname,$lname);
$question=新问题($your_question,$author);
}捕获(例外$e){
echo$e->getMessage(),“
”;
出口
}
$homepage->content=getQuestion()}
输入您的名字
输入您的姓氏
你的问题是什么?
_结束;
$homepage->display();
将代码修改为:
if(isset($\u POST['submit'])){
$fname=清除数据($fnupost['fname']);
$lname=清除数据($U POST['lname']);
$your_question=clean_数据($_POST['question']);
}
试一试{
$homepage=新页面;
$author=新作者($fname,$lname);
$question=新问题($your_question,$author);
}捕获(例外$e){
echo$e->getMessage(),“
”;
出口
}
$homepage->content=getQuestion()}
输入您的名字
输入您的姓氏
你的问题是什么?
_结束;
$homepage->display();
函数clean_data($data)
{
$data=修剪($data);
$data=带标签($data);
$data=addslashes($data);
返回$data;
}
您需要将HEREDOC结束部分放在行的最开头,如文档所述:
$homepage->content=能否请您在if语句之前执行var\u转储($\u POST),并查看在没有显示任何内容的情况下,$\u POST['submit']的值是多少?可以将if的}
移动到try块之后?var\u dump($\u POST);数组(size=0)为空-但为什么连html代码都不显示为like?可能使这更复杂的是,包括表单在内的所有内容都被分配给一个类属性。我应该重写我的代码吗?因为所有的输出都是由$homepage->display()处理的,并且它包含$content@Joey,这真的取决于你想要实现什么。但是从您提供的代码中我可以看到,$homepage->display将不会被调用,因为$U POST['submit']没有设置,php也不会在设置表单和$homepage的地方输入if子句。@Joey-您可以测试这是否是问题的一种方法是将isset($\U POST['submit'])更改为isset($\U GET['submit'])然后在调用页面时,将?submit=submit添加到url的末尾(例如:localhost/index.php?submit=submit..如果表单显示,则必须将表单移出,$homepage->display移出If子句您向我解释得很好。现在我明白了。@Joey很乐意帮忙,希望您看到我更新的解释:)结尾不是开头吗?问题中是缩进的。在结束标记之前不能有任何空白。
$fname = isset($_POST['fname']) ? clean_data($_POST['fname']) : NULL;
$lname = isset($_POST['lname']) ? clean_data($_POST['lname']) : NULL;
$your_question = isset($_POST['question']) ? clean_data($_POST['question']) : NULL;
try {
$homepage = new Page;
$author = new Author($fname, $lname);
$question = new Question($your_question, $author);
} catch (Exception $e) {
echo $e->getMessage(), '<br>';
exit;
}
$homepage->content = <<<_END
<p>Hello {$author->getFirstName()} {$author->getLastName()}!</p><br>
<p>You ask: {$question->getQuestion()}</p>
<form action="{$_SERVER['PHP_SELF']}" method="post" role="form">
<label for="fname">Enter your first name</label><br>
<input type="text" id="fname" name="fname" size="30"><br>
<label for="lname">Enter your last name</label><br>
<input type="text" id="lname" name="lname" size="30"><br>
<label for="question">What is your question?</label><br>
<text area id="question" name="question" rows="10" cols="70"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>
_END;
$homepage->display();
if (isset($_POST['submit'])) {
$fname = clean_data($_POST['fname']);
$lname = clean_data($_POST['lname']);
$your_question = clean_data($_POST['question']);
}
try {
$homepage = new Page;
$author = new Author($fname, $lname);
$question = new Question($your_question, $author);
} catch (Exception $e) {
echo $e->getMessage(), '<br>';
exit;
}
$homepage->content = <<<_END
<p>Hello {$author->getFirstName()} {$author->getLastName()}!</p><br>
<p>You ask: {$question->getQuestion()}</p>
<form action="{$_SERVER['PHP_SELF']}" method="post" role="form">
<label for="fname">Enter your first name</label><br>
<input type="text" id="fname" name="fname" size="30"><br>
<label for="lname">Enter your last name</label><br>
<input type="text" id="lname" name="lname" size="30"><br>
<label for="question">What is your question?</label><br>
<text area id="question" name="question" rows="10" cols="70"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>
_END;
$homepage->display();
function clean_data($data)
{
$data = trim($data);
$data = strip_tags($data);
$data = addslashes($data);
return $data;
}
$homepage->content = <<<_END
...
</form>
_END;