如果没有结果,我想将用户重定向到其他页面。
我的意思是,我通过url传递变量并在第二页上使用,如果变量为空,我可以重定向到另一页。
但是当用户将url中的变量id更改为
时 index.php?product-tit/=how+to+deal+with%20&%20item-id-pr=15
到index.php?product-tit/=how+to+%20&%20item-id-pr=
页面上没有显示任何内容,所以在上述情况下我是否可以重定向到其他页面?
$title = urldecode($_GET['product-tit/']);
$id = $_GET['item-id-pr'];
$mydb = new mysqli('localhost', 'root', '', 'database');
if(empty($title) && empty($_GET['item-id-pr'])){
header('Location: products.php');
}
else{
$stmt = $mydb->prepare("SELECT * FROM products where title = ? AND id = ? limit 1 ");
$stmt->bind_param('ss', $title, $id);
$stmt->execute();
?>
<div>
<?php
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo wordwrap($row['price'], 15, "<br />\n", true);
}
$mydb->close ();}
?>
</div>
答案 0 :(得分:1)
你的条件要求两个变量都是空的,如果要在任何空的时候重定向,你应该使用OR(||
):
if(empty($title) || empty($_GET['item-id-pr'])){
header('Location: products.php');
// make sure nothing more gets executed
exit();
}
另请注意,在header
声明之前,您无法向浏览器输出任何内容。
答案 1 :(得分:0)
有两件事需要检查
这里可以是伪代码
<?php
$id = $_GET['item-id-pr'];
$mydb = new mysqli('localhost', 'root', '', 'database');
// I am assuming variable name is "product-tit"
$title = urldecode($_GET['product-tit']);
if(trim($title) == "" || trim($_GET['item-id-pr']) == ""){
header('Location: products.php');
exit;
}
$stmt = $mydb->prepare("SELECT * FROM products where title = ? AND id = ? limit 1 ");
$stmt->bind_param('ss', $title, $id);
$stmt->execute();
$result = $stmt->get_result();
if( $result->num_rows == 0 ) {
// redirect user
header('Location: products.php');
exit;
}
?>
<div>
<?php
while ($row = $result->fetch_assoc()) {
echo wordwrap($row['price'], 15, "<br />\n", true);
}
$mydb->close ();
?>
</div>
答案 2 :(得分:0)
测试$_GET
参数是否已设置且之前 将其分配给其他变量并执行其他操作。
<?php
if (!isset($_GET['product-tit/'], $_GET['item-id-pr'])
|| empty($_GET['product-tit/'])
|| empty($_GET['item-id-pr']))
{
header('Location: products.php');
// although note that HTTP technically requires an absolute URI
exit;
}
// now assign $title and $id, initialize the db, etc