- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有三个单独的页面:modify.php 允许用户选择一个发布者并为该发布者创建一个 session 变量。
修改.php
<?php
session_start();
require ("../login.php");
if (!isset($_SESSION['user']))
header('Location: ../index.php');
if (isset($_POST['submit'])) {
$_SESSION['publisher'] = $_POST['publishers'];
header('Location: modify2.php');
}
$user_id = $_SESSION['user'];
$success = true;
include ("header.php");
include ("subnav.php");
$stmt = $db->prepare
("SELECT DISTINCT p.name
FROM subscriptions s
JOIN titles t
ON s.title = t.id
JOIN publishers p
ON t.publisher = p.name
WHERE s.user=:user
ORDER by p.name");
$stmt->bindValue(':user', $user_id, PDO::PARAM_INT);
$stmt->execute();
$rows = $stmt->fetchAll();
$num_rows = count($rows);
if ($num_rows == 0) {
$success = false;
$errors[] = 'You currently have no subscriptions.';
}
?>
<h2>Modify Subscriptions</h2>
<?php
if (!empty($errors))
foreach($errors as $error)
echo $error;
?>
<?php
if ($success == true) { ?>
<form action="" method="post">
<ul>
<li>
Select Publisher:<br>
<select name="publishers">
<?php
foreach($rows as $row) {
echo '<option value ="'. $row['name'] . '">' . $row['name'] . '</option>';
} ?>
</select>
</li>
<li>
<input type="submit" value="Select Publisher" name ="submit" id="submit">
</li>
</ul>
</form>
<?php } ?>
<?php
include ("footer.php");
?>
modify2.php 从 modify.php 接收 session 变量“publisher”并检索该出版商的标题。然后它取消设置发布者 session 变量有两个原因:1)不再需要它和 2)如果这个变量是空的,那么 mofify2.php 知道 referer 来自错误的页面
modify2.php
<?php
session_start();
require ("../login.php");
if (!isset($_SESSION['user']))
header('Location: ../index.php');
if (!isset($_SESSION['publisher']))
header('Location: modify.php');
$referer = $_SERVER['HTTP_REFERER'];
if (basename($referer) <> 'modify.php')
header('Location: modify.php');
if (isset($_POST['submit'])) {
$_SESSION['title'] = $_POST['title'];
unset($_SESSION['publisher']);
header('Location: modify3.php');
}
$user_id = $_SESSION['user'];
$publisher = $_SESSION['publisher'];
include ("header.php");
include ("subnav.php");
$stmt = $db->prepare
("SELECT t.title
FROM titles t
JOIN publishers p
ON t.publisher = p.name
JOIN subscriptions s
ON t.id = s.title
WHERE s.user=:user AND t.publisher=:publisher
ORDER by t.title");
$stmt->bindValue(':user', $user_id, PDO::PARAM_INT);
$stmt->bindValue(':publisher', $publisher, PDO::PARAM_STR);
$stmt->execute();
$rows = $stmt->fetchAll();
$num_rows = count($rows);
if ($num_rows == 0)
$errors[] = 'There are currently no titles for that publisher.';
?>
<h2>Modify Subscriptions</h2>
<?php
if (!empty($errors))
foreach($errors as $error)
echo $error;
?>
<form action="" method="post">
<ul>
<li>
Select Title:<br>
<select name="title">
<?php
foreach($rows as $row) {
echo '<option value ="'. $row['id'] . '">' . $row['title'] . '</option>';
} ?>
</select>
</li>
<li>
<input type="submit" value="Select Title" name ="submit" id="submit">
</li>
</ul>
</form>
<?php
include ("footer.php");
?>
这个文件就是问题所在。无论出于何种原因,我的 http_referer 代码块都阻止访问该页面。任何帮助将不胜感激。
modify3.php
<?php
session_start();
require ("../login.php");
if (!isset($_SESSION['user']))
header('Location: ../index.php');
if (!isset($_SESSION['title']))
header('Location: modify2.php');
$referer = $_SERVER['HTTP_REFERER'];
if (basename($referer) <> 'modify2.php');
header('Location: modify2.php');
$user_id = $_SESSION['user'];
$title = $_SESSION['title'];
$success = false;
if (isset($_POST['submit'])) {
$covers = (isset($_POST['covers'])) ? 1 : 0;
if (empty($_POST['quantity']))
$errors[] = 'You must enter a quantity!';
else if (!is_numeric($_POST['quantity']))
$errors[] = 'You must enter a number for the quantity field!';
else if (is_numeric($_POST['quantity']) && $_POST['quantity'] > 5)
$errors[] = 'If you want to subscribe to more than 5 of the same issue, please contact us';
else {
$stmt = $db->prepare("UPDATE subscriptions SET quantity=:quantity, covers=:covers WHERE user=:id AND title=:title");
$stmt->bindValue(':quantity', $_POST['quantity'], PDO::PARAM_INT);
$stmt->bindValue(':covers', $covers, PDO::PARAM_INT);
$stmt->bindValue(':id', $user_id, PDO::PARAM_INT);
$stmt->bindValue(':title', $title, PDO::PARAM_INT);
$stmt->execute();
$success = true;
unset($_SESSION['title']);
}
}
include ("header.php");
include ("subnav.php");
?>
<h2>Modify Subscriptions</h2>
<?php
if (!empty($errors))
foreach($errors as $error)
echo $error;
?>
<?php
if ($success == false) { ?>
<form action="" method="post">
<ul>
<li>
<b>Title To Modify:</b><br>
<?php
$stmt = $db->prepare("SELECT title FROM titles WHERE id=:title");
$stmt->bindValue(':title', $title, PDO::PARAM_STR);
$stmt->execute();$rows = $stmt->fetchAll();
foreach ($rows as $row) {
echo $row['title'];
}
?>
</li>
<li>
<br><input type="checkbox" name="covers" value="covers"
<?php
$stmt = $db->prepare("SELECT covers FROM subscriptions WHERE user=:id AND title=:title");
$stmt->bindValue(':id', $user_id, PDO::PARAM_INT);
$stmt->bindValue(':title', $title, PDO::PARAM_INT);
$stmt->execute();
$rows = $stmt->fetchAll();
foreach ($rows as $row)
if ($row['covers'] == 1)
echo 'checked';
?>
>Check to opt-in for all regular priced covers.
</li>
<li>
<br><b>Quantity Requested:</b> <br>
<input type="text" name="quantity" value="<?php $stmt = $db->prepare("SELECT quantity FROM subscriptions WHERE user=:user AND title=:title"); $stmt->bindValue(':user', $user_id, PDO::PARAM_INT); $stmt->bindValue(':title', $title, PDO::PARAM_INT); $stmt->execute(); $rows = $stmt->fetchAll(); foreach ($rows as $row) echo $row['quantity']; ?>">
</li>
<li>
<input type="submit" value="Save Changes" name="submit" id="submit">
</li>
</ul>
</form>
<?php }
else { ?>
<p>You have succesfully updated your title!</p>
<?php } ?>
<?php
include ("footer.php");
?>
如果我取出下面的代码块:
$referer = $_SERVER['HTTP_REFERER'];
if (basename($referer) <> 'modify2.php');
header('Location: modify2.php');
然后我的页面可以正常工作,但它不会阻止人们手动将其输入浏览器并以错误的方式访问它。
最佳答案
您不能依赖浏览器发送的 Referer
header 。事实上,出于“安全”原因,其中一些提供了欺骗它的选项。
相反,您应该在$_SESSION
数组中保存一个变量,指示用户是否以正确的方式访问了页面。
关于php - HTTP_REFERER 行为 - 需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16027735/
有时我的 facebook friend 会混淆 HTTP_REFERER 和 HTTP_REFERRER,因为在字典中只有 referrer。为什么拼写错误的标准协议(protocol)定义,为什么
如果查询字符串包含非英文字符,为什么 $_SERVER['HTTP_REFERER'] (PHP) 和 Request.ServerVariables("HTTP_REFERER") (ASP) 返回
我在这里找了一段时间,找不到我的具体问题的答案。 在我网站的 100 个位置中,我通过 header 位置重定向重定向到错误页面。 header("Location: /error.php"); 我想
我听说 HTTP_REFERER 可以被欺骗。我有 2 个站点,第一个联系第二个,第二个使用 HTTP_REFERER 来验证请求来自第一个。 如果我收到从我的第一个站点到第二个站点的虚假请求并且我知
如何从请求对象中获取引荐来源网址?变量 this.request.headers['referer'] 为空。 最佳答案 如果您的页面被另一个页面引用,则可以通过 this.headers.refer
网站 (wwww.fake-web-site.com) 将其链接重定向到我的网站 (www.real-web-site.com ).只有第一页不同。 我写了一段代码,将所有来自假网站的人重定向到 go
我正在创建一个网站,在一个特定页面上,我想将用户送回上一页。我对 PHP/HTML 还很陌生,一直在使用一些现有的代码来寻求想法和帮助。 现有代码使用如下方法: if (! empty($HTTP_R
刚才运行了一段代码,来查看Request.ServerVariables里面有多少值,看了一下,共50个! 代码<%=Request.ServerVariables.count%&
我怎么知道 nginx 变量 $http_referer 何时未设置或为空? 我收到一些没有 http 引用的请求。在 nginx 日志中 $http_referer 看起来像这样:“-”。我想要做的
我可以控制 HttpServer,但不能控制 ApplicationServer 或坐在那里的 Java 应用程序,但我需要阻止直接访问这些应用程序上的某些页面。准确地说,我不希望用户自动访问向适当的
我需要设置 caller ssi 中的参数作为当前 uri 包含在内,但 $document_uri 的工作很奇怪 带有 ssi-include 的模板部分:
当用户通过我网站的链接浏览到另一个网站时,如何隐藏 $_SERVER['HTTP_REFERER']? 最佳答案 您不能,您无法控制发送到其他站点的 header 。 header 从浏览器发送到正在
我需要检查并记录我的网络应用程序的访问者的推荐人。使用 HTTP_REFERER 的可靠性如何?还有其他选择吗? 最佳答案 使用 HTTP_REFERER 并不可靠,其值取决于浏览器或客户端应用程序发
我需要尝试欺骗 HTTP_REFERER 传递给我的另一个页面,以便在目标页面中,我可以确定请求来自“正确”页面并执行适当的逻辑。 如何在 JavaScript (AJAX) 中执行此操作? 我可以在
我有一个问题,我想根据引用网址中的子字符串重定向用户,我如何使用 htaccess 来完成此操作? 用户正在访问 http://example.com/aqeel/videos/ 上面的页面有一个超链
我目前的设置是...包含 的 javascript 文件 $(document).ready(function() { $.ajax({ cache: false, type: 'GE
我有一个页面可以通过 PHP 的 header() 函数将用户重定向到另一个网站。但是,我想在将用户发送到该网站之前清空用户的 HTTP_REFERER 变量。 最可靠的方法是什么?我猜 PHP 无能
我有三个单独的页面:modify.php 允许用户选择一个发布者并为该发布者创建一个 session 变量。 修改.php prepare ("SELECT DISTINCT p.na
我正在开发一个 PHP 网站作为 Android 的应用程序,但我遇到了一个问题。我有一个后退按钮,我在下面使用逻辑编写$_SERVER['HTTP_REFERER'] 来找出它来自哪里的页面..但是
我的 http_referer 是这样说的: http://www.domain.com/search/?etcetcetcetc... 我需要比较我的 http_referer 来查找以下内容
我是一名优秀的程序员,十分优秀!