Enr*_*más 0 php variables get switch-statement
我使用Switch statment来改变我的页面内容,如下所示:
$id=$_GET['id'];
$n = $_GET['n'];
switch ($id) {
case 0:
include("news.php");
break;
case 1:
include("newsdetail.php?n=".$n);
break;
default:
include("news.php");
}
Run Code Online (Sandbox Code Playgroud)
在news.php中,我显示了所有现有的新闻:
while($myrow = mysqli_fetch_array($result)){
echo "<table>
<tr>
<td><img width='200' heigth='115' src='images/".$myrow['smallimage'].".jpg'/></td>
<td>
<b>".$myrow['title']."</b>
<br />
<i>By ".$myrow['author'].", ".$myrow['date']."</i>
<br />
".$myrow['preview']."<br>
<a href='index.php?id=1&n=".$myrow['id']."'><b>READ</b></a>
</td>
</tr>
</table>";
}
Run Code Online (Sandbox Code Playgroud)
而且insidetails.php:
$idnews = $_GET['n'];
$sql = "SELECT * FROM news WHERE id='$idnews'";
$result = mysqli_query($db,$sql);
while($myrow = mysqli_fetch_array($result)){
echo $myrow['title']."<br>
<i>Por ".$myrow['author']."</i><br>
".$myrow['date']."<br>
<img src='images/".$myrow['bigimage'].".jpg'>
".$myrow['body']."";
}
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,我会得到一个网址,.../index.php?id=1&n=1但没有显示任何内容.单独测试时一切正常.是否可以制作这样的东西并让它起作用?
你不能做这样的包括:
case 1:
include("newsdetail.php?n=".$n);
break;
Run Code Online (Sandbox Code Playgroud)
这将让PHP试图找到一个名为的文件newsdetail.php?n=1,因此没有内容显示出来.
但是没有必要这样做; 你包含的文件仍然可以访问$ _GET变量 - 比如$ _POST等等,它们是全局的,因此可以在代码中的任何地方访问.
只是要注意警惕; 您将值$_GET直接传递给查询.这将使您了解SQL注入问题.你应该看看使用mysqli_或PDO,它们都可以帮助你编写更安全的代码.