Как отобразить данные с помощью URL - PullRequest
0 голосов
/ 06 октября 2019

Как отобразить информационные данные с использованием идентификатора в URL-адресе

Пример: www.thatsite.com/?id=1092

, и он отобразит данные идентификатора 1092

<?php    
    $connect = mysqli_connect("localhost", "xxxxxxx", "xxxx","xxxx");
    $query = "SELECT `name`, `age`, `xxxxx` , `xxxxx`, `image` FROM `profiles` WHERE `id` = $id LIMIT 1";
    $id=$_GET['id'];
    $result = mysqli_query($connect, $query,$id);
      while ($row = mysqli_fetch_array($result))
      {
        echo $row['name'];
        echo $row['xxxx'];x
        echo $row['age'];
        echo $row['xxxxxxx'];
        echo $row['image'];
      }  
?>

Ответы [ 3 ]

1 голос
/ 06 октября 2019

Ваш код полон дыр в безопасности. Это склонно к SQL-инъекциям, xss-атакам, CSRF, HTML-инъекциям.

Я переписал его, чтобы обойти все проблемы.

1.) Sql Injection теперь смягчается с помощью подготовительных запросов

2.) Внедрение HTML смягчается с помощью intval для целочисленных переменных и strip_tags для строк. Вы можете прочитать больше о проверке и очистке данных в php, чтобы увидеть больше доступных опций

3.) xss атака была смягчена с помощью htmlentities () . Вы также можете использовать htmlspecialchars () . Узнайте больше обо всех этих вещах

см. Более надежные коды ниже

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "ur dbname";

// Create connection
$connect = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($connect->connect_error) {
    die("Connection failed: " . $connect->connect_error);
}

// ensure that the Id is integer using intval
$id = intval($_GET["id"]);

// if id is a string. you can strip all html elements using strip_tags
//$id = strip_tags($_GET["id"]);

//Avoid sql injection using prepared statement

// prepare and bind

$stmt = $connect->prepare("SELECT name, age , xxxxx, image FROM profiles WHERE id = ? LIMIT 1");

// id is integer or number use i parameter
$stmt->bind_param("i", $id);

// id is integer or number use s parameter
//$stmt->bind_param("s", $id);

$stmt->execute();
$stmt -> store_result(); 
$stmt -> bind_result($name, $age, $xxxxx, $image); 
while ($stmt -> fetch()) { 

// ensure that xss attack is not possible using htmlentities
    echo "your Name: .htmlentities($name). <br>"; 
    echo "your age: .htmlentities($age). <br>"; 
    echo "your xxxxx: .htmlentities($). <br>"; 
    echo "your image name: .htmlentities($image). <br>"; 

}


$stmt->close();
$connect->close();
?>
0 голосов
/ 06 октября 2019

из https://www.w3schools.com/php/php_mysql_select.asp

пропустите 'get id', идентификатор в SQL:

$id=$_GET['id'];

Аналогичный пример в https://www.w3schools.com/php/php_mysql_select.asp

$servername = "localhost";
$username = "";
$password = "";
$dbname = "";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {

    echo "0 results";
}

mysqli_close($conn);
0 голосов
/ 06 октября 2019

Easy.
Сначала получите параметр id из url
Затем добавьте эту переменную $ id в запрос MySQL

   <?php    

    $connect = mysqli_connect("localhost", "xxxxxxx", "xxxx","xxxx");

$id = $_GET["id"]

    $query = "SELECT `name`, `age`, `xxxxx` , `xxxxx`, `image` FROM `profiles` WHERE id = '$id' LIMIT 1";
      $result = mysqli_query($connect, $query);
      while ($row = mysqli_fetch_array($result))
      {
        echo $row['name'];
        echo $row['xxxx'];
        echo $row['age'];
        echo $row['xxxxxxx'];
        echo $row['image'];
      }  
?>

Надеюсь, это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...