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

2つのこと。

1) 機能性

$id=$_GET['job_id'];

する必要があります

$id=$_GET['id'];

リンクはjob_idではなく変数idを渡すため、次のようになります。

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

2) セキュリティ

ユーザー入力データをSQLクエリに直接挿入しないでください。あなたは頭痛またはそれ以上のことを求めています。受信ページの$idは、ルックアップを実行する前に検証してエスケープする必要があります。番号が必要な場合は、受信ページで次のようにします。

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

DBに有効なコードを照会し、それらを配列に入れてから、その配列をチェックして、渡された値が見つかるかどうかを確認することは悪い考えではありません。これにより、ユーザーが入力したデータがDBに到達するのを防ぎます。

このようなもの:

$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 に答える