我有一个控制结构,根据请求uri生成一个页脚,但我收到的错误是:
Notice: Undefined variable: modalResponse in C:\xampp\htdocs\SoftwareAPIs\tribeca-app\foot.php on line 25
Notice: Undefined variable: modalResponse in C:\xampp\htdocs\SoftwareAPIs\tribeca-app\foot.php on line 26
但这就是foot.php的样子:
<?php
if ($_SERVER["REQUEST_URI"] === "/tribeca-app/home/") {
echo "<footer id='homeFooter'>
<p>Created by <a href='https://mcgurkconsulting.com' title='McGurk Consulting'>Adam McGurk</a> © <span id='currentYear'></span> </p>
</footer>
<script src='/tribeca-app/js/bundle.js'></script>
<script src='index.js'></script>
if (isset($modalResponse)) {
echo $modalResponse;
}
</body>
</html>";
} else {
echo "<footer>
<p>Created by <a href='https://mcgurkconsulting.com' title='McGurk Consulting'>Adam McGurk</a> © <span id='currentYear'></span> </p>
</footer>
<script src='/tribeca-app/js/bundle.js'></script>
<script src='index.js'></script>
if (isset($modalResponse)) {
echo $modalResponse;
}
</body>
</html>";
}
?>
包含foot.php的视图由我的index.php控件提供,这是定义变量的地方。我只是不明白为什么我的isset()不起作用。这是index.php控件:
<?php
// Dependencies
session_start();
require_once "../db.php";
require_once "model.php";
// Serve the view if it is navigated to
if (empty($_POST) && empty($_GET) && empty(file_get_contents("php://input"))) {
$pageTitle = "Register";
include "../view/register.php";
exit;
}
// Receive and filter input
$name = strval(filter_input(INPUT_POST, "name", FILTER_SANITIZE_STRING));
$username = filter_input(INPUT_POST, "username", FILTER_SANITIZE_EMAIL);
$password = filter_input(INPUT_POST, "password", FILTER_SANITIZE_STRING);
// Server side validation
if ($name === "") {
$modalResponse = "<script>showModal(`You must fill out your name.`)</script>";
exit;
} if ($username === "") {
$modalResponse = "<script>showModal(`You must fill out your email.`)</script>";
exit;
} if ($password === "") {
$modalResponse = "<script>showModal(`You must provide a password.`)</script>";
exit;
} if (!filter_var($username, FILTER_VALIDATE_EMAIL)) {
$modalResponse = "<script>showModal(`You must provide a valid email.`)</script>";
exit;
}
// Check if user already exists
if (checkUser($username)) {
// username already exists
}
// Hash password and insert into database
$password = password_hash($password, PASS_ALGO);
$result = registerUser($name, $username, $password);
if ($result === 1) {
$_SESSION["modalResponse"];
} else {
$modalResponse;
}
为什么我的设置不会阻止我的php错误?
答案 0 :(得分:3)
您的isset
未被评估为php,仅modalResponse
。这是因为双引号中不是php变量名的所有内容都被视为字符串。
要将语句评估为PHP,请尝试以下方法:
<script src='index.js'></script>
". if (isset($modalResponse)) {
echo $modalResponse;
} . "
</body>
答案 1 :(得分:1)
简单明了,你走了。 你只需要切掉你的回声来恢复PHP逻辑。
<?php
if ($_SERVER["REQUEST_URI"] === "/tribeca-app/home/") {
echo "<footer id='homeFooter'>
<p>Created by <a href='https://mcgurkconsulting.com' title='McGurk Consulting'>Adam McGurk</a> © <span id='currentYear'></span> </p>
</footer>
<script src='/tribeca-app/js/bundle.js'></script>
<script src='index.js'></script>";
if (isset($modalResponse)) {
echo $modalResponse;
}
echo "</body>
</html>";
} else {
echo "<footer>
<p>Created by <a href='https://mcgurkconsulting.com' title='McGurk Consulting'>Adam McGurk</a> © <span id='currentYear'></span> </p>
</footer>
<script src='/tribeca-app/js/bundle.js'></script>
<script src='index.js'></script>";
if (isset($modalResponse)) {
echo $modalResponse;
}
echo"</body>
</html>";
}
?>
答案 2 :(得分:0)
您正在将if语句键入为字符串。你可以尝试类似的东西:
if ($_SERVER["REQUEST_URI"] === "/tribeca-app/home/") {
$modalResponse = isset($modalResponse) ? $modalResponse : "" ;
echo "<footer id='homeFooter'>
<p>Created by <a href='https://mcgurkconsulting.com' title='McGurk Consulting'>Adam McGurk</a> © <span id='currentYear'></span> </p>
</footer>
<script src='/tribeca-app/js/bundle.js'></script>
<script src='index.js'></script>
$modalResponse
</body>
</html>";
} else {
echo "<footer>
<p>Created by <a href='https://mcgurkconsulting.com' title='McGurk Consulting'>Adam McGurk</a> © <span id='currentYear'></span> </p>
</footer>
<script src='/tribeca-app/js/bundle.js'></script>
<script src='index.js'></script>
$modalResponse
</body>
</html>";
}
答案 3 :(得分:0)
你的foot.php有问题。你已经在""
内写了你的整个php,因为它被认为是一个字符串。将您的代码更改为。
if ($_SERVER["REQUEST_URI"] === "/tribeca-app/home/") {
?> <footer id='homeFooter'>
<p>Created by <a href='https://mcgurkconsulting.com' title='McGurk Consulting'>Adam McGurk</a> © <span id='currentYear'></span> </p>
</footer>
<script src='/tribeca-app/js/bundle.js'></script>
<script src='index.js'></script><?php
if (isset($modalResponse)) {
echo $modalResponse;
} ?>
</body>
</html> <?php
} else { ?>
<footer>
<p>Created by <a href='https://mcgurkconsulting.com' title='McGurk Consulting'>Adam McGurk</a> © <span id='currentYear'></span> </p>
</footer>
<script src='/tribeca-app/js/bundle.js'></script>
<script src='index.js'></script> <?php
if (isset($modalResponse)) {
echo $modalResponse;
} ?>
</body>
</html>
}
用此
替换您的代码