1

私のスクリプトであなたの助けが必要です。古いニュース記事へのリンクをサイドバーに置いて、クリックできるようにしています。送信元のページ (header.php) の URL には GET ID が含まれているため、それを受信するページでも GET の値がチェックされます。サイドバーの古いニュース記事をクリックすると問題なく表示されます。

私が抱えている問題は、About.phpページで現在の記事を表示したいときはいつでも、未定義のインデックスIDを取得することです

私のスクリプトが古い記事と現在のニュース記事を表示するのにうまく機能するように、この問題を解決するにはどうすればよいでしょうか。

ありがとう

about.php

<?php

$id = $_GET['id'];
$past = mysql_query( "SELECT * FROM about WHERE about_id = '".$id."'") or die(mysql_error()); 
$row = mysql_fetch_array($past);

echo "<h2>";
echo $row1['about_head'];
echo "</h2>";
echo "<p>";
echo $row1['about_content'];
echo "</p>";

?>

ヘッダ

<?php

$past = mysql_query("SELECT * FROM about") or die(mysql_error());                    
while($row = mysql_fetch_array($past))
    echo "<a href=\"http://127.0.0.1/church/About.php?id=$row[about_id]\"> $row[about_head].</a><br/>";

?>
4

2 に答える 2

2

このコードがある場合:

      $id = $_GET['id'];

$_GET (すべての GET パラメータを保持する) という配列から "id" という項目を取得しています。ただし、このパラメータ「id」が存在しない場合、PHP は警告を発します。それを取り除くには、行を次のように置き換えます。

$id = "";
if (isset($_GET["id"])) $id = $_GET["id"];

またはすぐに:

$id = isset($_GET["id"]) ? $_GET["id"] : "";

最初にパラメーターが存在するかどうかを尋ね、存在しない場合は空の文字列を返します。変数が整数であると予想される場合$idは、空の文字列の代わりにゼロを使用することをお勧めします。

$id = isset($_GET["id"]) ? (int)$_GET["id"] : 0;

これにより、渡されたパラメーターも「int」にキャストされるため、文字列ではないことが保証されます (悪意のあるデータが含まれている可能性があります)。

于 2012-05-01T21:03:45.297 に答える
0

このようなものが機能するはずです:

if( array_key_exists( 'id', $_GET ) )
{
  //do your code in here
}
else
{
  //fallback to scenario in which $_GET['id'] isn't set in the url
}
于 2012-05-01T21:01:53.897 に答える