0

我有这段代码允许我将变量传递到另一个页面,但问题是我似乎无法使用链接获取该变量。我们以前尝试过,同样的方法并且有效..你能检查一下吗?

谢谢..

链接:

$sql="SELECT * FROM pianificazione";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
?>
<a href="lista_attivita.php?&id=<?php echo $row['job_id'] ; ?>"><?php echo $row['job'] ?></a>
<?php echo '</br><br />'; }
?>

链接后的页面:

include('menu.php');
$id=$_GET['job_id'];
$sql="SELECT * FROM attivita WHERE job_id='$id'";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
?>
<a href="lista_attivita.php?&id=<?php echo $row['att_id'] ?>"><?php echo $row['attivita_da_promuovere'] ?>-<?php echo $row['attivita_tip_merc'] ?>-<?php echo $row['attivita_da_svolgere'] ?>-<?php echo $row['attivita_tip_personale'] ?></a>
4

4 回答 4

3

你应该使用:

$id = $_GET['id'];

您也对 SQL 注入持开放态度......要么将其解析为 INT:

$id = (int) $_GET['id'];

...或使用PDO准备好的语句(而不是您正在使用的默认 mysql 函数,不再推荐)。

于 2012-09-17T14:44:05.303 回答
1

您将其传递为:

lista_attivita.php?&id=<?php echo $row['job_id'] ; ?>

然后寻找它:

$id=$_GET['job_id'];

你应该使用:

$id=$_GET['id'];
于 2012-09-17T14:44:30.433 回答
0

在您传递给“链接后页面”的 URL 中,您将“?id = xxx”设置为参数,但是在您的脚本中,您正在寻找“job_id”。

在您的第一个脚本中将参数更改为 ?job_id=。

于 2012-09-17T14:45:18.757 回答
0

两件事情。

1) 功能性

$id=$_GET['job_id'];

应该

$id=$_GET['id'];

因为您的链接传递变量 id,而不是 job_id:

lista_attivita.php?&**id**=<?php echo $row['job_id']

2) 安全

永远,永远不要将用户输入的数据直接插入到 SQL 查询中。你问的是头痛或更糟。在进行任何查找之前,应验证并转义接收页面上的 $id。如果您需要一个数字,请在接收页面上执行以下操作:

if (!is_numeric($_GET['id']))
{
// throw error
}

查询您的数据库以获取有效代码并不是一个坏主意,将它们放入一个数组中,然后检查该数组以查看是否找到传递的值。这可以防止用户输入的数据到达您的数据库。

像这样的东西:

$q = "SELECT DISTINCT(id) FROM my_table WHERE display=1 ORDER BY id ASC";
$res = mysqli_query($dbx,$q);
while (list($_id) = mysqli_fetch_array)
{
  $arr_valid_id[] = $_id;
}

然后,

if (in_array($_GET[id],$arr_valid_id[])
{
// do stuff
} else {
// throw error
}
于 2012-09-17T14:48:45.143 回答