簡體   English   中英

在PHP中將url更改為不存在的url

[英]changing url to not existing one in php

1)我有網址http://localhost/Mayboo/az/product.php?id = 1當我將網址更改為localhost / Mayboo / az / product.php?id = [我在這里寫的任何其他內容]它給出了像這樣的錯誤: 致命錯誤:在第12行的C:\\ Users \\ Javid \\ Desktop \\ maybo \\ az \\ product.php中的非對象上調用成員函數fetch_assoc() 如何防止此類錯誤,如果沒有此類網址重定向到404頁面?

2)另外一個問題:當我寫localhost / Mayboo / az / product.php?id = 1%27時,它會出現此錯誤: 您的SQL語法中有錯誤; 檢查與您的MySQL服務器版本對應的手冊,以便在第144行使用“1”附近的正確語法 我怎么能防止這種情況呢? 這是我的代碼。 先謝謝!

<?php include 'inc/header.php'; ?>

<?php   
    //create DB Object
    $db = new Database();
    ?>

<?php 
$id = $_GET['id'];

$query = "SELECT * FROM mallar WHERE id = '$id'";
$post = $db->select($query)->fetch_assoc();
?>

        <div class="productcolumn col-md-8">
            <?php if($id == $post['id']): ?>
           <h1><?php echo $post['title_az']; ?></h1>
            <div class="productinfo">
                <img src="img/<?php echo $post['img']; ?>">
                <p><?php echo $post['text_az']; ?></p>
            </div>
            <div class="pdf">
                <?php if($post['pdf']): ?>
                <img src="img/pdf.png">
                <a href="doc/<?php echo $post['pdf']; ?>"><p><?php echo $post['pdf']; ?></p></a>
                <?php endif; ?>
            </div>
            <?php else: ?>
            <?php header("Location: 404.html"); ?>
            <?php endif; ?>
        </div>

您可以在代碼中添加以下檢查:

  • 檢查ID是否為integer數值
  • 檢查數據庫是否為給定ID返回了一些行

更改

$id = $_GET['id'];
$query = "SELECT * FROM mallar WHERE id = '$id'";
$post = $db->select($query)->fetch_assoc();

至:

$id = $_GET['id'];

$error = "";

// check if id id an integer

if(is_int($id)) { 
  $query = "SELECT * FROM mallar WHERE id = '$id'";

  // check if there are no records for an invalid ID.
  if($db->select($query)->num_rows()) {
    $post = $db->select($query)->fetch_assoc();
  }
  else {
    echo "No results found";
    die();
  }
else {
 echo "Wrong user ID supplied";
 die();
}

PS:您的代碼容易受到SQL注入攻擊。 您應該使用庫MySQLiPDO准備用綁定參數的語句如本描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM