Вторник, 16.06.2026, 15:00
Приветствую Вас Гость | RSS
Поиск по каталогу
Главная страница | Каталог статей | Регистрация | Вход

Информационные технологии
Форма входа
Меню сайта

Категории каталога
php [246]
perl [1]
perl
ASP [1]
AJAX [0]

Друзья сайта

Наш опрос
Оцените мой сайт
Всего ответов: 69

Начало » Статьи » Web программирование » php

Делаем простейшее подобие интернет-магазина. part2
Делаем файл basket.php3 - он у нас ответственный за добавление записей
в корзину и просмотр этой корзины:

Файл basket.php3


<? require ( "cookie.php3"); ?>

<html>
<head>
<body>

<div align="center"><p>Содержимое вашей корзины</p></div>

<table border=1 align="center">
<tr>
<td>Наименование товара</td>
<td>Цена</td>
<td>Кол-во</td>
<td>Сумма</td>
<td>Удалить</td>
</tr>

<?php
$table_4
= "shop_tmp";

echo
"<form method='post' action='$php_self'>";

$summa = $price*$quantity;
$activated = time();


Добавление товаров в корзину


function add() {

global
$uid, $activated, $goods, $price, $quantity, $summa, $goods_id, $table_4;
require (
"connect.php3");

$result = mysql($dbname, "select * from $table_4 where (goods_id='$goods_id') and (uid='$uid') " );
$num = mysql_num_rows($result);

if (
$num > 0) // значит такой товар в корзине уже есть и надо увеличить кол-во и сумму
{
$result_1=mysql($dbname, "select * from $table_4 where (goods_id='$goods_id') and (uid='$uid') " );

$quantity_table=mysql_result($result_1,0, "quantity");
$price=mysql_result($result_1,0, "price");

$quantity_total=$quantity_table+$quantity;
$summa_total=$quantity_total*$price;

$sql= "update $table_4 set quantity=$quantity_total, summa=$summa_total
where goods_id='$goods_id' and uid='$uid'"
;
mysql_db_query($dbname,$sql);
}

else
// такого товара для этого пользователя еще нет - просто добавляем
{

$sql_insert = "insert into $table_4 (id,uid,activated,goods,price,quantity,summa,goods_id)
values ('','$uid',$activated,'$goods',$price,$quantity,$summa,'$goods_id')"
;

mysql($dbname,$sql_insert);
}

view(); // добавили и вызывваем функцию для просмотра корзины
}

function
delete() {
global
$id, $table_4;
require (
"connect.php3");
$result = mysql($dbname, "delete from $table_4 where (id='$id')");
view();
}

function
delete_all() {
global
$uid, $table_4;
require (
"connect.php3");
$result = mysql($dbname, "delete from $table_4 where (uid='$uid')");
view();
}

function
view() {
global
$uid, $activated, $table_4;
require (
"connect.php3");

$result = mysql($dbname, "select * from $table_4 where (uid='$uid') order by goods" );
$num = mysql_num_rows($result);

if (
$num == 0) {
echo
"<tr>";
echo
"<td colspan=5 align=center><p>В Вашей корзине нет ни одного товара! </td></tr>";
}

else {

$total=0.00;
$i=0;

while(
$i<$num)
{
$goods=mysql_result($result,$i, "goods");
$goods_id=mysql_result($result,$i, "goods_id");
$quantity=mysql_result($result,$i, "quantity");
$id=mysql_result($result,$i, "id");
$price=mysql_result($result,$i, "price");
$summa=mysql_result($result,$i, "summa");

echo
"<tr>n
<td> $goods </td>n
<td> $price </td>n
<td> $quantity шт. </td>n
<td> $summa </td>n
<td> <a href='basket.php3?action=delete&id=$id&uid=$uid'>Удалить</a></td>n
</tr>n"
;

$total=$summa+$total;
$i++;

}

}
echo
"<tr>
<td colspan=5 align=center><p>Общая сумма заказа - $total руб.</td></tr>"
;
}

if (
$add)
{
add(); }

elseif (
$action== "delete") {delete(); }

elseif (
$empty) {delete_all(); }

else {
view(); }


?>
</table></form>


<div align="center"><br>

<form method='post' action='order.php3'>
<input type="hidden" name="uid" value=" <? echo "$uid"; ?>">
<input type="submit" name="order" value="Оформить заказ">
</form>

<? echo "<form method='post' action='$php_self'>"; ?>
<input type='hidden' name="uid" value=" <? echo "$uid"; ?>">
<input type="submit" name="empty" value="Очистить корзину">
</form>

</div>
</body>
</html>
================================================================


3) Теперь осталось сформировать текст письма:

Файл order.php3


<html>
<
head>
<
body>
<
form name='order' action='end.php3' method='post'>
Ваше имя и фамилия <input type="text" name="name" size="40" maxlength="60"><br>
e-mail <input type="text" name="email" size="40" maxlength="40"><br>

<
center> Сейчас заказаны следующие позиции: </center>

<
table border=1 align="center">
<
tr>
<
td>Артикул товара</td>
<
td>Наименование товара</td>
<
td>Цена</td>
<
td>Кол-во</td>
<
td>Сумма</td>
</
tr>

<?
php
{
$table_4 = "shop_tmp";

require (
"connect.php3");

$result = mysql($dbname, "select * from $table_4 where (uid='$uid')" );
$num = mysql_numrows($result);

if (
$num == 0) {
echo
"<tr>";
echo
"<td colspan=5>В Вашей корзине нет ни одного товара! </td></tr>";
}

else {
$body = "";
$total=0;
$i=0;

while(
$i<$num)
{
$goods=mysql_result($result,$i, "goods");
$price=mysql_result($result,$i, "price");
$goods_id=mysql_result($result,$i, "goods_id");
$quantity=mysql_result($result,$i, "quantity");
$id=mysql_result($result,$i, "id");
$summa=mysql_result($result,$i, "summa");
$total=$total+$summa;


$body_1= "<tr><td> $goods_id </td> <td> $goods </td><td> $price руб.</td>
<td>$quantity шт.</td><td> $summa руб.</td></tr>"
;

echo
$body_1;

$body .= $body_1;

$i++;
}

}

$body = htmlspecialchars ($body);

echo
"<tr>
<td colspan=5 align=center>Общая сумма заказа - $total руб. </td></tr>
<input type=hidden name='total' value='$total'>
<input type=hidden name='body' value="
$body">
<input type=hidden name='uid' value='$uid'>"
;
}

?>
</table>
<br>
<div align="center"><input type="submit" name="submit" value="Закончить оформление заказа"></div>
</form>
</body></html>


4) ... и отправить письма (клиенту и менеджеру)
Да, необходимый комментарий. Я на первой странице своего сайта
указывал что это просто СОВЕТЫ, а никак не готовые решения.
И что необходимо почитать кое-что еще прежде чем браться за написание.
В данном случае, я намекаю на статью "приемы безопасного программирования на php".
Вот посмотрите листинг следующего файла и прочитайте то,
о чем я говорю - сразу станет ясно где дыра...

Файл end.php3


<?
if (
$name == "") {
echo
"Вы не указали свое имя!";
exit; }

elseif (
$email == "") {
echo
"Вы не указали адрес email!";
exit;}

else
{

//$message & $header - это для отправки менеджеру
//$message_1 & $header_1 - это для отправки клиенту

$message= "<html><body><font size='+1'><p align='justify'>
Новый заказ с сайта www.nnn.net.<br>
Сведения о покупателе:<br> Имя - $name<br>
Компания - $company<br> Телефон - $phone<br>
e-mail - $email<br><br>
Содержание заказа:<br><br>
<table border=1> $body
<tr><td colspan=5><b> Всего на сумму - $total руб.</b></td></tr>
</table></font></p></body></html> "
;

$header= "to: info@nnn.netnfrom: mail-robot@nnn.netnreply-to: $emailnx-mailer:
php auto-mailerncontent-type: text/html;nmime-version: 1.0n "
;

$message_1= "<html><body><font size='+1'><p align='justify'>
Уважаемый $name!n На сайте фирмы 'nnn' (www.nnn.net) Вами был сделан заказ:
<br><br>
<table border=1> $body
<tr><td colspan=5><b> Всего на сумму - $total руб.</b></td></tr>
</table><br>
Наши менеджеры свяжутся с Вами в самое ближайшее время для уточнения деталей.
Спасибо.
</font></p></body></html>"
;

$header_1= "to: $emailnfrom: mail-robot@nnn.netnreply-to: info@nnn.netnx-mailer:
php auto-mailerncontent-type: text/html;nmime-version: 1.0n "
;

@
mail( "info@nnn.net", "order from nnn web site", $message, $header);
@
mail($email, "order from nnn web site", $message_1, $header_1);

echo
"<h4>Уважаемый <b>$name</b>! Ваш заказ принят.
Менеджер нашей фирмы свяжется с Вами в ближайшее время для уточнения деталей.<br>
Спасибо за посещение нашего сайта!</h1>n"
;
}
?>


Ну что? Разумеется, опасность в том, что этому скрипту можно подсунуть
ЛЮБЫЕ данные и он их отправит спокойно..
Выход: не пересылать с предыдущей страницы содержимое заказа,
а формировать его непосредственно в этом скрипте.
Вообще, надо стараться таскать за собой как можно меньше данных.
Также, НИКОГДА не повредит проверка того, с какой страницы пришел запрос.
5) Все. Мы получили все что хотели. Теперь осталось только сделать функцию
которая будет чистить таблицу shop_tmp от старых заказов. Но это уже сами.

6) Перед всеми операциями с базой данных вызывается файл
для соединения с базой данных такого вида:

Файл connect.php3


<?php
{
$dbname = "test";
$host = "localhost";
$port = "3306";
$user = "root";
$password = "";

mysql_connect($host,$user,$password);
mysql_select_db($dbname) or die( "unable to select database");
}

?>


ps. Еще раз повторяю - все что здесь написано я проверил -
ЭТО работает. Если у вас не так - вы просто что-то неправильно сделали...
pps. По просьбам трудящихся, дописан пункт 4.
И немного поправлен пункт три..
Категория: php | Добавил: freeone (22.05.2007) | Автор: leosha
Просмотров: 659 | Рейтинг: 0.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:

Copyright Информационные технологии © 2006