从链接获取变量的问题

时间:2012-09-17 14:43:08

标签: php

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

谢谢..

链接:

$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 个答案:

答案 0 :(得分:3)

您应该使用:

$id = $_GET['id'];

您也可以使用SQL注入...将其解析为INT:

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

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

答案 1 :(得分:1)

你将它传递给:

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

然后将其视为:

$id=$_GET['job_id'];

您应该使用:

$id=$_GET['id'];

答案 2 :(得分:0)

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

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

答案 3 :(得分: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
}