pavan kumar Ответов: 1

Как отобразить данные, когда имя, адрес электронной почты, имя пользователя или D. O. B вводятся во входной текст?


Цитата:
У меня есть страница приветствия со всеми данными пользователей, которые зарегистрировались. На моей странице приветствия есть поле ввода, поэтому,когда я ввожу чье-либо имя,имя пользователя,адрес электронной почты, D. O. B говорит Паван или pavan1994@gamil.com , то все строки совпадают с этими введенными данными, должны отображаться только эти строки.


Что я уже пробовал:

<pre><?php
        session_start();
        if (!isset($_SESSION['id'])) {
            header('location:login.php');
        }
    ?>
    <!DOCTYPE html>
    <html>
    <body>
    <?php
    include_once 'connect.php';
     $query=mysqli_query($mysqli,"select * from `users` where userid='".$_SESSION['id']."'");
    $row=mysqli_fetch_array($query);
    echo 'Welcome - '.$row['username'];
    ?>
        <br>
    <a href="logout.php">Logout</a>
    <br>
    <?php
     //include_once 'connect.php';
    $result = mysqli_query($mysqli,"SELECT * FROM users");
    echo "<table border='1'>
    <tr>
       <th>User_ID</th>
       <th>Name</th>
       <th>Username</th>
       <th>E-mail</th>
       <th>Department</th>
       <th>Date_of_birth</th>
       <th>Age</th>
       <th>Image</th>
       <th>Action</th>
        <th>Action</th>
    </tr>";
     while($row = mysqli_fetch_array($result))
    {
      echo "<tr>";
     echo "<td>" . $row['userid'] . "</td>";
       echo "<td>" . $row['name'] . "</td>";
       echo "<td>" . $row['username'] . "</td>";
      echo "<td>" . $row['email'] . "</td>";
      echo "<td>" . $row['department'] . "</td>";
     echo "<td>" . $row['Date_of_birth'] . "</td>";
    echo "<td>" . $row['age'] . "</td>";
     echo "<td><img alt='image' style='width:100px;height:50px;' src='upload/".$row['filename']."'></td>";
     echo "<td> <a href='editform.php?id=" . $row['userid'] . "'>Edit</a></td>";
     echo "<td> <a href='deleteform.php?id=" . $row['userid'] . "'>Delete</a></td>";
      echo "</tr>";
       }
      echo "</table>";
    ?>
      <?php

       //include_once 'connect.php';   
        if(isset($_POST["happy"])){
       if(empty($_POST["happy"])){ //not empty name
          echo '<br>';
              echo "No letter entered";
        }else {
              $name = $_POST["happy"];
              $id = $_GET['id'];
              $sql = "SELECT * FROM `users` WHERE userid='$id'";
              $result = mysqli_query($mysqli, $sql);
              $row = mysqli_fetch_array($result);
              $sql="select name, username, email, Date_of_birth from `users`;";
           if (mysqli_query($mysqli, $sql) === TRUE) {
                            print_r($id);
      }else {
     echo 'No record found';
       }

     }

     }

     ?>

            <form method="post">
                <br>
                Search: <input type="text" name="happy"><br><br>
                <input type="submit" value="Submit">
            </form>                 
        </body>
    </html>

		    
                    

1 Ответов

Рейтинг:
0

Patrice T

$query=mysqli_query($mysqli,"select * from `users` where userid='".$_SESSION['id']."'");

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]