我有两个PHP文件。
第一个名为“file1.php”:
<form action="file2.php" method="get">
<input type="hidden" name="price" value="50">
<input type="hidden" name="id" value="1">
<input type="submit" border="0" name="submit" value="Buy Now">
</form>
第二个叫做“file2.php”:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" id="id" name="id" value="<?php echo $_GET["id"]; ?>" alt="<?php echo $_GET["price"]; ?>" readonly="readonly" />
</form>
现在这是我的问题:
有些人可能会在file1.php上查看该页面的来源,并尝试访问file2.php。我希望它们能够自动重定向到file1.php或者无法看到file2.php,除非他们点击了file1.php中的提交按钮。
也有些人可能会尝试删除从上一页(file1.php)发出的GET方法的数据,以便能够查看file2.php,有没有办法阻止这种情况发生?我不希望它显示404错误,只是将该人重定向到file1.php页面,除非他们点击file1.php中的一个提交按钮,因为有很多表单。
我认为这可能与PHP有关,需要放在file2.php上,但不太确定如何让它正常工作。
有什么想法吗?
感谢大家到目前为止所有的帮助和建议。
好吧,所以现在一切似乎都在使用表单方法POST。但是,要使其正常工作,我们必须列出每个模板的所有变量。每个模板有4个变量。 2个ID和2个价格。例如:
$T900_0001_R_ID = "#900-0001 - Regular";
$T900_0001_R = 75;
$T900_0001_E_ID = "#900-0001 - Exclusive";
$T900_0001_E = 500;
现在,我的下一个问题是:我们如何将此代码转换为用于MySQL数据库,因为在接下来的几周内将会有数百甚至数千个模板出售?
file1.php:
<?php
$T900_0001_R_ID = "#900-0001 - Regular";
$T900_0001_R = 75;
$T900_0001_E_ID = "#900-0001 - Exclusive";
$T900_0001_E = 500;
echo "<form action='test2.php' method='post'><input type='hidden' name='template_price' value='" . $T900_0001_R . "'><input type='hidden' name='template_id' value='" . $T900_0001_R_ID . "'><input type='submit' class='buynow' border='0' name='submit' value='Buy Regular'></form>";
?>
file2.php:
<?php
$T900_0001_R_ID = "#900-0001 - Regular";
$T900_0001_R = 75;
$T900_0001_E_ID = "#900-0001 - Exclusive";
$T900_0001_E = 500;
echo "<form><input type='text' id='template_id' name='template_id' value='" . $_POST["template_id"] . "' alt='" . $_POST["template_price"] . "' readonly='readonly' class='input-text sum' /></form>";
?>
答案 0 :(得分:2)
人们可能会做很多事情。他们可能会从file1.php获取值并POST它们。或者发布一些东西试图打破你的程序。
您可以做的最好的事情是验证您的参数,以确保在执行各种命令之前它们具有您期望的值。
在您的示例中,您可以验证价格是否为数字:
if( isset($_POST['price'] ) && is_numeric($_POST['price'] ) ) {
// process
}
else {
//redirect to file1.php or show an error
}
然而,看起来您通过表单发布项目的价格。如果您担心某人查看来源,您为什么不担心有人会改变价格?这是一件微不足道的事情。我上面的代码不会阻止它。您必须检查以确保贴出的价格是商品的实际价格,但如果您这样做,为什么需要首先从表单中发布?
答案 1 :(得分:0)
请检查提交(我建议将file1.php上的方法切换为post
)
在file2.php中:
if(count($_POST)){ //0 is false, any other number true
//do stuff
}
else {
header('Location: file1.php');
}
答案 2 :(得分:0)
我会将第一页作为帖子,然后在第二个文件上查看帖子:
if(isset($_POST['id'] && $_POST['price']) {
// Display second form
} else {
header('Location: http://www.example.com/');
}
答案 3 :(得分:0)
在file2.php
<?php
if(!isset($_GET['id']) && !isset($_GET['price'])) {
header('Location: file1.php');
die();
}
?>
除了我不想在其他方向编辑问题之外,您必须首先创建一个数据库表。它看起来像
ID type price
1 e 500
1 r 75
2 e 250
2 r 50