Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用GET参数制作内容管理系统_Php_Jquery_Html_Css - Fatal编程技术网

Php 使用GET参数制作内容管理系统

Php 使用GET参数制作内容管理系统,php,jquery,html,css,Php,Jquery,Html,Css,我正在为 目前我有3页: index.php |查看最新新闻并选择要阅读的新闻 article.php |查看实际的新闻帖子 post.php |制作新的新闻帖子(需要管理员访问) 现在,在index.php中,我将执行以下操作: $query = "SELECT * FROM news ORDER BY date DESC LIMIT 20"; $run = mysqli_query($connect,$query); while($row = mysqli_fetch_array($ru

我正在为
目前我有3页:

  • index.php |查看最新新闻并选择要阅读的新闻
  • article.php |查看实际的新闻帖子
  • post.php |制作新的新闻帖子(需要管理员访问)
现在,在index.php中,我将执行以下操作:

$query = "SELECT * FROM news ORDER BY date DESC LIMIT 20";
$run = mysqli_query($connect,$query);
while($row = mysqli_fetch_array($run)) {
    $article_id = $row['article_id'];
    $user_id = $row['user_id'];
    $title = $row['title'];
    $content = $row['content'];
    $date = $row['date'];
    $query = "SELECT username FROM users WHERE ID = '$user_id'";
    $test = mysqli_query($connect,$query);
    $row2 = mysqli_fetch_array($test);
    $user_name = $row2['username'];
    echo '<div class="row">
        <div class="col-lg-12"><h3 class="para"><a class="para" href="article.php?id='.$article_id.'">'.$title.'</a></h3>
        <p class="para">Written by: '.$user_name.'</p>
        </div>
        </div>';
}
$query=“按日期从新闻订单中选择*描述限制20”;
$run=mysqli\u查询($connect,$query);
while($row=mysqli\u fetch\u数组($run)){
$article_id=$row['article_id'];
$user_id=$row['user_id'];
$title=$row['title'];
$content=$row['content'];
$date=$row['date'];
$query=“从ID为“$user\U ID”的用户中选择用户名”;
$test=mysqli\u查询($connect,$query);
$row2=mysqli_fetch_数组($test);
$user_name=$row2['username'];
回声'

作者:'.$user\u name'

'; }
正如你所看到的,我在回应新闻帖子。
当你点击其中一个图标时,你会看到
article.php?id=post\u id

我试图找到一种方法,不使用get参数就将信息获取到
article.php
,因为这会使它容易受到Sqli攻击。我知道我可以在article.php上保护它,但我更愿意不使用GET请求。
我希望这样做的方式是:

  • 通过$\u SESSION将信息发送到'article.php',但我不知道如何在点击链接时将帖子的id设置为`$\u SESSION'
  • facebook的做法,如果你去https://facebook.com/youtube 例如,你可以理解我的意思,他们为每个用户创建目录,我知道如何创建目录,但我不知道如何使用新闻帖子的内容创建新的.php文件
再次强调,任何需要帮助的人都可以使用$\u SESSION:)但我不推荐

但是ir现代系统使用的URL非常漂亮,比如


您应该保护sql不受注入的影响

您的假设并不完全正确。使用
GET
是标准。否则,您将无法“深度链接”。你必须告诉你的朋友去那个网站,点击第十四页,然后选择第三个故事来查看内容

实际上,您要做的是确保用户发送给您的数据是干净的,或者不直接使用它。作为一个(糟糕的)伪代码示例,请使用以下代码:

$result = mysqli_query("SELECT * FROM news WHERE id = ".GET_['id']);
这将允许直接的SQL注入,并且将非常糟糕。通过使用包含int和分号的GET参数,您几乎可以对该代码执行任何操作。然后运行自己的查询。以更改管理员密码为例

更好的方法是验证用户数据并使用


与facebook相比,他们可能会使用重写规则将参数绑定到变量。因此,真正发生的事情是(在它的结尾)
index.php?page=youtube&user=someone
正在被调用(如果他们真的使用php,它可能是任何类型的文件和任何类型的参数)。重写的工作方式取决于您的Web服务器。

我只会使用get,它的标准它会使它成为sqli易受攻击的,我知道我可以避免它,但我希望了解facebook是如何做到的。如果您只使用url路径名,它仍然是易受攻击的,如facebook。变量仍然需要检查。facebook没有每个用户的目录。它在url中使用路径的方式与您使用id=99的方式相同。您能解释一下他们是如何隐藏它的吗?旁注:您没有使用预先准备好的语句,也没有转义HTML或url,因此您可以接受几乎所有存在的代码注入(SQL注入,XSS…。我做到了;)不过,我在另一方面确实有问题。当我去css的时候似乎有点不见了,但是当我去想为什么的时候?都给我一个404。通过URL重写,浏览器将看到重写的URL。因此,您必须让相对链接指向这个“虚拟”目录。因此,如果您使用
href=“css/style1.css”
设置样式,它将尝试在目录
/user/css
中查找
style1.css
。通过在前面添加斜杠,可以使其成为绝对链接。你必须考虑如何解决这个问题。这两种方法都有利弊。我目前正在转向pdo
$newsIDs = mysqli_query("SELECT id FROM news");
$getID = $_GET['id'];
if(in_array($getID,$newsID)){
    $statement = $mysqli->prepare("SELECT * FROM news WHERE id = ?");
    $statement->bind("i", $getID);
    $result = $statement->execute();
}