Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2016, 18:20   #1
PHP_DELETANT
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 31
По умолчанию Код немного не отрабатывает задуманные действия :(

Код:
	 <?php
	 	$login = $_SESSION['login'];
			$resultat1 = mysql_query("SELECT cash FROM users WHERE login='$login' ",$db);// извлекаем из таблицы баланс пользователя
  $cashsum = mysql_fetch_array($resultat1);
  $cash = $cashsum['cash'];
			 $resultat = mysql_query("SELECT * FROM open_bay WHERE login='$login' ",$db);//извлекаем из таблицы данные о товаре и стоимости
  $array = mysql_fetch_array($resultat);
  $date = $array['date'];
  $lot = $array['kategori'];
  $one_lot = $array['one_lot'];
  $one_x = $array['one_c'];
  $to_x = $array['to_c'];
  $to_lot = $array['to_lot'];
  $col = $array['col'];
  $summ = ($one_c*$col+$to_c*$col);//считаем сумму заказа
			if    (isset($_POST['col'])) {$col = $_POST['col'];	if ($col == '') { echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";} }//если пользователь ничего не ввел 
					
if ($cash < $col) {echo "no money";}//если у пользователя не хватаете средств на балансе
		
else {//если все нормально заносим данные в таблицу оформленных заказов
$result2 = mysql_query ("INSERT INTO korzina (login,date,ketegori,one_lot,one_c,to_c,to_lot,col,summ) VALUES('$login','$date','$kategori','$one_lot','$one_c','$to_c','$to_lot','$col','$summ')");
	echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";
	mysql_query ("DELETE FROM open_bay WHERE login='$login'",$db);}//удаляем данные из таблицы для заказа
	?>
и так что мы имеем если пользователь ничего не ввел (переменная col )то при нажатии на кнопку ничего считаться не должно и записываться в таблицы не должно, но код считает нулевое значение

вроде же написал если КОЛ пустой то обновляем страницу
Код:
if ($col == '') { echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";} }

Последний раз редактировалось PHP_DELETANT; 08.02.2016 в 18:32.
PHP_DELETANT вне форума Ответить с цитированием
Старый 08.02.2016, 18:29   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так проверяйте что введено.

И узнайте о SQL инъекциях, а то придет вездесущий Бобби.



https://en.wikipedia.org/wiki/Prepar...tement#PHP_PDO

www.phptherightway.com/#databases
http://getjump.me/ru-php-the-right-w...BD%D1%8B%D1%85
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.02.2016, 19:16   #3
PHP_DELETANT
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 31
По умолчанию

Спасибо, попробуем разобраться с инъекцией, еще не касался этой темы
PHP_DELETANT вне форума Ответить с цитированием
Старый 08.02.2016, 19:53   #4
PHP_DELETANT
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 31
По умолчанию

Смотрю что ввожу все равно не могу понять
Код:
if    (isset($_POST['col'])) {$col = $_POST['col'];	if ($col == '') { echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";} }//если пользователь ничего не ввел
пост запрос, туда пользователь должен ввести значение (isset($_POST['col'])), это значение приравниваем к переменной col пишу $col = $_POST['col']; далее если поле для ввода остается пустым if ($col == '') то обновляем страницу т е условие выполнено, а на деле мы считаем что пользователь ввел 0 и считаем результат
получается что выполняется эта строка
Код:
$result2 = mysql_query ("INSERT INTO korzina (login,date,ketegori,one_lot,one_c,to_c,to_lot,col,summ) VALUES('$login','$date','$kategori','$one_lot','$one_c','$to_c','$to_lot','$col','$summ')");

но как если мы пишем условия и код говорит нам
если пользователь ничего не ввел то обновляем страницу
если пользователь что то ввел то сравниваем значение с его балансом если баланс меньше то говорим пользователю no money no sex
иначе считаем сумму добавляем значение в таблицу, обновляем страницу и удаляем промежуточные значения

Последний раз редактировалось PHP_DELETANT; 08.02.2016 в 20:02.
PHP_DELETANT вне форума Ответить с цитированием
Старый 08.02.2016, 20:13   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не форматируйте так странно код, сложно читать же.
Например так лучше:
Код:
<?php

$login = $_SESSION['login'];
$resultat1 = mysql_query("SELECT cash FROM users WHERE login='$login' ",$db); // извлекаем из таблицы баланс пользователя
$cashsum = mysql_fetch_array($resultat1);
$cash = $cashsum['cash'];
$resultat = mysql_query("SELECT * FROM open_bay WHERE login='$login' ",$db);//извлекаем из таблицы данные о товаре и стоимости
$array = mysql_fetch_array($resultat);
$date = $array['date'];
$lot = $array['kategori'];
$one_lot = $array['one_lot'];
$one_x = $array['one_c'];
$to_x = $array['to_c'];
$col = $array['col'];
$summ = $one_c*$col+$to_c*$col; //считаем сумму заказа
if (isset($_POST['col'])) {
    $col = $_POST['col'];
    if ($col == '') { //если пользователь ничего не ввел 
        echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";
    }
}

if ($cash < $col) { //если у пользователя не хватаете средств на балансе
    echo "no money";
}	
else {
    $result2 = mysql_query ("INSERT INTO korzina (login,date,ketegori,one_lot,one_c,to_c,to_lot,col,summ) VALUES('$login','$date','$kategori','$one_lot','$one_c','$to_c','$to_lot','$col','$summ')");
    echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";
    mysql_query ("DELETE FROM open_bay WHERE login='$login'",$db);}//удаляем данные из таблицы для заказа
}

?> // если у вас в файле только РНР код, а не HTML и РНР в одном .php файле, то ?> вообще не надо (и лучше не писать)
Цитата:
получается что выполняется эта строка
так скрипт же не завершился после проверки '', а дальше пошел.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.02.2016, 20:49   #6
PHP_DELETANT
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 31
По умолчанию

ну глянем )

Последний раз редактировалось PHP_DELETANT; 08.02.2016 в 20:53.
PHP_DELETANT вне форума Ответить с цитированием
Старый 08.02.2016, 21:02   #7
PHP_DELETANT
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 31
По умолчанию

ок если мы завершаем скрипт

exit;

получаем белый экран, но надо вернуться на странницу
PHP_DELETANT вне форума Ответить с цитированием
Старый 08.02.2016, 21:06   #8
PHP_DELETANT
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 31
По умолчанию

да и как он выполняется если ну нас стоит два условия
if
if а потом else, которое говорит если if не правда, то выполняем условие...которое у нас выполняется если if является правдой
PHP_DELETANT вне форума Ответить с цитированием
Старый 08.02.2016, 21:21   #9
PHP_DELETANT
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 31
По умолчанию

и эта строка выполняется даже если пользователь ничего не ввел
Код:
if (isset($_POST['col'])) {
    $col = $_POST['col'];
    if ($col == '') { //если пользователь ничего не ввел 
        echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";}
если я добавляю к ней exit; то следующие условия не выполняются
Код:
if (isset($_POST['col'])) {
    $col = $_POST['col'];
    if ($col == '') { //если пользователь ничего не ввел 
        echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";exit;}
PHP_DELETANT вне форума Ответить с цитированием
Старый 08.02.2016, 21:39   #10
PHP_DELETANT
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 31
По умолчанию

Всем спасибо, это опять не верно написал код

Код:
if    (isset($_POST['col'])) {$col = $_POST['col'];	if ($col == ''){ unset($col);} } 
			if (empty($col))
вот так все работает )))
PHP_DELETANT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив. есть код, нужно объяснить и немного подправить mikeel Общие вопросы C/C++ 8 10.06.2013 22:10
В Паскале немного доделать код Novenkaja Помощь студентам 0 10.04.2011 19:21
Списки(отредактировать немного код нужно) Lexeres Помощь студентам 4 25.03.2010 09:10
Немного не работает код лабораторной Sonyalex90 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 16.12.2009 22:53
Помогите немного уменьшить код С++ Olya90 Помощь студентам 10 06.10.2009 10:44