$ _获取url id

时间:2014-03-14 00:04:50

标签: php get

*的 固定 ** * *

echo "<li><a href=\"product_display?id=$id\">" . $row['iname'] . "</a></li>";

缺少什么?

.PHP

/捂脸


我似乎无法将id值传递给$ _GET。我尝试过添加会话和各种各样的东西。

即使我只是自己做print_r($GET),它也会给我:

  

该页面未正确重定向

     

Firefox检测到服务器正在重定向请求   这个地址永远不会完成

这不是用于生产,而是用于项目,所以我不担心注射等。 我已经使用旧的php mysql语法使用GET,它可以工作,只是不确定问题是什么。 Alos没有任何代码是野蛮的,所以任何帮助将不胜感激。

第1页:

<?php
require('lib/inc/db_inc.php');

$sql = "SELECT items.itemID, items.iname, items.idesc, items.iprice,iimg.imgURL FROM items JOIN iimg ON items.itemID = iimg.pid WHERE items.itype = 'usb_controllers'";

$stmt = $db->query($sql);

while ($row = $stmt->fetch()){

$id = $row['itemID'];

echo "<div class=\"prodMain\">";
echo "<div class=\"img\">";
echo "<a href=\"#\"><img src=\"" . $row['imgURL'] ."\"/></a>";
echo "</div>";
echo "<ul>";
echo "<li><a href=\"product_display?id=$id\">" . $row['iname'] . "</a></li>";
echo "<li><a href=\"#\">" . $row['idesc'] . "</a></li>";
echo "<li><a href=\"#\">" . $row['iprice'] . "</a></li>";
echo "</ul>";
echo "</div>";
}
?>

第2页:

 <?php
require('../lib/inc/db_inc.php');
if (!isset($_GET['id'])) {
    die("missing query parameter");
}
$id = intval($_GET['id']);
if ($id === '') {
    die("Invalid query parameter");
}

$sql = "SELECT items.itemID, items.iname, items.idesc, items.iprice,iimg.imgURL FROM items JOIN iimg ON items.itemID = iimg.pid  WHERE itemID = '$id'";

$stmt = $db->query($sql);

$row = $stmt->fetch();

echo print_r($row);
?>

db_inc.php

<?php
try {
    $db = new PDO('mysql:host=******;dbname=*****', '*********', '********');
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

1 个答案:

答案 0 :(得分:0)

本声明

$sql = "SELECT items.itemID, items.iname, items.idesc, items.iprice, iimg.imgURL FROM items JOIN iimg ON items.itemID = iimg.pid WHERE itemID = '$id'";
$stmt = $db->query($sql);

SQL注入漏洞。见here
所以你应该像

那样重写它
$sql = "SELECT items.itemID, items.iname, items.idesc, items.iprice, iimg.imgURL FROM items JOIN iimg ON items.itemID = iimg.pid WHERE itemID = ?";
$stmt = $db->prepare($sql);
$stmt->execute(array($_GET['id']));