PHP для передачи данных одного пользователя на другую страницу - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть административная область на сайте электронной коммерции, где администратор может просматривать всех пользователей на странице allusers.php.Пользователи перечислены в таблице с их личной информацией, однако у меня есть кнопка «Просмотр профиля» рядом с каждым пользователем, в результате чего, если вы нажмете на нее, она приведет вас на другую страницу, где вы сможете просмотреть прошлых заказов этих конкретных пользователей.

Ниже приведен код, который у меня есть для allusers.php:

    <?php

$result = mysql_query("SELECT * FROM customers ")
or die(mysql_error()); ;

if (mysql_num_rows($result) == 0) {
       echo 'There Arent Any Orders Yet';
    } else {

echo "<table border='0'><table border width=100%><tr><th>First Name</th><th>Surname</th><th>Address</th><th>E-Mail</th><th>Username</th><th>View Profile</th>";
while($info = mysql_fetch_array($result))
{
        echo "<tr>";
        echo "<td>" . $info['name']. "</td>";
        echo "<td>" . $info['surname']. "</td>";
        echo "<td>" . $info['address1']. $info['address2'].  $info['city'].  $info['postcode']." </td>";
        echo "<td>" . $info['email']. "</td>";
        echo "<td>" . $info['username']. "</td>";
        echo "<td>" . " <a href='view.php'>View</a> </td>";


}
    }
echo "</tr>";
echo "</table>";
?>

Страница view.php выглядит следующим образом:

<?php


$result = mysql_query("SELECT * FROM order WHERE ......dont know what to enter here")
or die(mysql_error()); ;

if (mysql_num_rows($result) == 0) {
       echo 'There Arent Any Orders For This Customer Yet';
    } else {

echo "<table border='0'><table border width=100%><tr><th>Product</th><th>Quantities</th><th>Date</th>";
while($info = mysql_fetch_array($result))
{
        echo "<tr>";
        echo "<td>" . $info['name']. "</td>";
        echo "<td>" . $info['quantity']. "</td>";
        echo "<td>" . $info['date']. " </td>";
}
    }
echo "</tr>";
echo "</table>";
?>

У меня есть база данных mysqlсо следующими полями и таблицами:

Клиенты - идентификатор, имя, фамилия, адрес1, адрес2, город, почтовый индекс, адрес электронной почты, имя пользователя, пароль

Продукция - серийный номер, имя, описание, цена,картинка

Заказ - идентификатор, имя, количество, цена, дата, имя пользователя

Спасибо за предоставленную помощь

Ответы [ 3 ]

2 голосов
/ 23 ноября 2011

В вашем коде отсутствуют какие-либо механизмы защиты ... Это очень плохо, особенно в условиях электронной коммерции.

За исключением этого, вы передадите имя пользователя на страницу просмотра в URL.

echo "<td>" . " <a href='view.php?user=" . $info['username'] . "'>View</a> </td>";

На странице просмотра вы получите параметр из URL и включите его в свой запрос.

if (isset($_GET) && isset($_GET['user'])) {
   $user = mysql_real_escape_string($_GET['user']);
} else {
   header('Location: allusers.php');
   exit(); // boot them back to the previous page.
}
$result = mysql_query("SELECT * FROM order WHERE username = '" . $user . "'")
1 голос
/ 23 ноября 2011

Попробуйте это:

allusers.php

<?php

$result = mysql_query("SELECT * FROM customers ")
or die(mysql_error()); ;

if (mysql_num_rows($result) == 0) {
       echo 'There Arent Any Orders Yet';
    } else {

echo "<table border='0'><table border width=100%><tr><th>First Name</th><th>Surname</th><th>Address</th><th>E-Mail</th><th>Username</th><th>View Profile</th>";
while($info = mysql_fetch_array($result))
{
        echo "<tr>";
        echo "<td>" . $info['name']. "</td>";
        echo "<td>" . $info['surname']. "</td>";
        echo "<td>" . $info['address1']. $info['address2'].  $info['city'].  $info['postcode']." </td>";
        echo "<td>" . $info['email']. "</td>";
        echo "<td>" . $info['username']. "</td>";
        echo "<td>" . " <a href='view.php?user={$info['username']}'>View</a> </td>";


}
    }
echo "</tr>";
echo "</table>";
?>

view.php

<?php

$user = mysql_real_escape_string($_GET['user']);
$result = mysql_query("SELECT * FROM order WHERE user = '$user'")
or die(mysql_error()); ;

if (mysql_num_rows($result) == 0) {
       echo 'There Arent Any Orders For This Customer Yet';
    } else {

echo "<table border='0'><table border width=100%><tr><th>Product</th><th>Quantities</th><th>Date</th>";
while($info = mysql_fetch_array($result))
{
        echo "<tr>";
        echo "<td>" . $info['name']. "</td>";
        echo "<td>" . $info['quantity']. "</td>";
        echo "<td>" . $info['date']. " </td>";
}
    }
echo "</tr>";
echo "</table>";
?>
1 голос
/ 23 ноября 2011

Простой способ может быть следующим. Заменить эту строку в alluser.php

echo "<td>" . " <a href='view.php'>View</a></td>";

с этим

echo '<td><a href="view.php?username=' . $info['username'] . '">View</a></td>';

, а затем, в вашем view.php есть

if (isset($_GET['username']) && $_GET['username'] != '')
{
   $username = mysql_real_escape_string($_GET['username']);
   $result = mysql_query("SELECT * FROM order WHERE username = '$username'");
}
else
{
  // No user specified. Do other statements
}

Обратите внимание на использование:

  1. Пользователь функции mysql_real_escape_string() для защиты от внедрения SQL (было бы лучше использовать подготовленные операторы)
  2. Использование параметра username на первой странице для передачи значения имени пользователя на вторую страницу
  3. Использование глобального массива $_GET для извлечения параметра
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...