【发布时间】:2017-03-29 11:54:19
【问题描述】:
我正在尝试创建一组 if 语句来检查某些条件并返回一个值。我遇到的问题是我一直在设计它并在 Firefox 中运行它,但我在 Chrome 中尝试过它,但我得到的结果与陈述不同。
我试图用 if 语句做的是,用户在页面上填写表格,然后被发送到另一个页面,该页面将:
- 检查值的内容,如果为空,则生成一条消息“你不应该在这里”-(好像有人直接访问了该页面)
- 如果值不为空,请检查页面是否已刷新并产生消息“已输入数据库”-(因此不会重新输入)
- 如果值不为空(如 1)且页面未刷新(如 2),则将数据存储到数据库中并生成消息“成功”
当我填写表格并被带到此页面时,它会运行代码并按应有的方式显示“成功”。但是当我在 Chrome 中以完全相同的方式运行它时,我收到消息“这已经输入到数据库中” - 好像页面已被刷新。
我正在使用的代码(减去所有布局代码)是:
<?php session_start();
$seen = 0;
$pageWasRefreshed = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0';
$message = $_SESSION['message'];
$code = $_SESSION['code'];
require 'inc/database.php';
if (!(isset($message) && ($message!==null))) {
echo 'You should not be here!';
} else {
$message = strip_tags(trim($_SESSION['message']));
if ($pageWasRefreshed) {
echo 'This has already been entered into the database';
} else {
$stmt = $conn->prepare('INSERT INTO data (code, message) VALUES (:code, :pmessage)');
$stmt->execute(array(
'pcode' => $code,
'pmessage' => $message,
));
$last_id = $conn->lastInsertId();
echo $last_id . 'Success!';
}
}
我(显然)边走边学,使用嵌套的 if 语句让我有点困惑,所以它可能很简单,但由于它适用于 Firefox 而不是 Chrome,我不知道如何按我的方式工作通过找出问题所在。
【问题讨论】:
-
chrome 和 firefox 无法以不同的方式评估 php-code,因为 php 完全是在 服务器端 执行的。 chrome 和 firefox 从未见过 一行 php,除了显示为文本外,不知道如何处理它。
-
据我所知,php 不在浏览器上运行,它运行在为浏览器提供 html 页面的服务器上。所以,这意味着,在我看来,不同的是服务器,而不是浏览器
-
显示您正在使用的 html 代码。正如 Franz 所说,浏览器没有看到任何 PHP,您的 html 中的某些内容显示不同。
-
Fox,发布
<form>,以便我们测试您的代码。那些$_SESSION变量是在哪里创建的(“消息”、“代码”)?
标签: php google-chrome firefox if-statement