Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL, Нужна помощь. 
:(
    Опции темы
rondo157
  Дата 4.6.2014, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.6.2014

Репутация: нет
Всего: нет



Код

<?php

if(!in_array($_SERVER['REMOTE_ADDR'],
  array('109.70.3.48', '109.70.3.146', '109.70.3.210'))) {
  header("HTTP/1.0 403 Forbidden");
  die("Error: Unknown IP");
}

$message_id = $_GET['message_id'];
$service_id = $_GET['service_id'];
$shortcode = $_GET['shortcode'];
$keyword = $_GET['keyword'];
$message = $_GET['message'];
$sender = $_GET['sender'];
$operator = $_GET['operator'];
$country = $_GET['country'];
$custom = $_GET['custom'];
$points = $_GET['points'];
$price = $_GET['price'];
$currency = $_GET['currency'];

$dbhost = "localhost";
$dbuser = "root";
$dbpassword = "";
$db = "newproject_db_auth2";

$conn = @mysql_connect($dbhost, $dbuser, $dbpassword);
 
$query = "UPDATE `bg_user` SET `cash` = `cash` + `$points` WHERE user_id = '$custom'";
mysql_query($query);
?>


Это скрипт PayGol. Когда я нажимаю "оплатить" на сайте все оплачивается а "cash" не приходят. В чем тут ошибка?

Это сообщение отредактировал(а) Aliance - 4.6.2014, 09:57
PM MAIL   Вверх
Aliance
Дата 4.6.2014, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



1. Почитать про PDO/MySQLi и использовать их, вместо устаревших функций mysql_*
2. Почитать про sql injection и больше так запросы не писать. Необходимо экранировать подставляемые данные, которые приходят от пользователя.
3. Убрать ` вокруг подставляемой переменной $points, они там не нужны, если это не поле, а значение.
4. Если все же необходимо пользоваться mysql_* - ошибку можно узнать с помощью методов mysql_errno / mysql_error

На будущее, пользуйтесь кнопкой КОД на данном форуме, чтобы обрамить ваш код.

PS: шеститысячное сообщение xD
PM MAIL WWW ICQ Skype   Вверх
rondo157
Дата 4.6.2014, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.6.2014

Репутация: нет
Всего: нет



Хорошо. я все понял. Можешь пожалуйста поправить скрипт? Я нуб в этом деле:(

Добавлено через 3 минуты и 31 секунду
Код

<?php

if(!in_array($_SERVER['REMOTE_ADDR'],
  array('109.70.3.48', '109.70.3.146', '109.70.3.210'))) {
  header("HTTP/1.0 403 Forbidden");
  die("Error: Unknown IP");
}

$message_id = $_GET['message_id'];
$service_id = $_GET['service_id'];
$shortcode = $_GET['shortcode'];
$keyword = $_GET['keyword'];
$message = $_GET['message'];
$sender = $_GET['sender'];
$operator = $_GET['operator'];
$country = $_GET['country'];
$custom = $_GET['custom'];
$points = $_GET['points'];
$price = $_GET['price'];
$currency = $_GET['currency'];

$dbHost='localhost';
$dbName='newproject_bd_auth';
$dbUser='root';
$dbPass='';

$myConnect = mysql_connect($dbHost,$dbUser,$dbPass));
mysql_select_db($dbName,$myConnect);

$qwer=mysql_query("select * from `mytable`",$myConnect);

$query= "UPDATE bg_user SET cash = cash + $points WHERE user_id = '$custom'".;

mysql_close($myConnect);
?>



Вот как я поправил, но платеж не идет(
PM MAIL   Вверх
Aliance
Дата 4.6.2014, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



30 строка зачем? Зачем точка в конце 32 строки?

Про sql injection так и не прочитали.
PM MAIL WWW ICQ Skype   Вверх
rondo157
Дата 4.6.2014, 12:36 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.6.2014

Репутация: нет
Всего: нет



Покажи свой вариант, я уже неделю голову ломаю..
PM MAIL   Вверх
Aliance
Дата 4.6.2014, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



У вас синтаксическая ошибка. Я уже написал, что нужно сделать, чтобы ошибка ушла. Если вы не способны прочитать предложение и исправить на его основе код - значит придется нанимать профессионала и платить ему.

И я что-то не припомню, чтобы мы переходили на ты.
PM MAIL WWW ICQ Skype   Вверх
rondo157
Дата 4.6.2014, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.6.2014

Репутация: нет
Всего: нет



Aliance, Дайте пожалуйста ссылку на исправку моей ошибки.
PM MAIL   Вверх
Aliance
Дата 4.6.2014, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Цитата(Aliance @  4.6.2014,  12:47 Найти цитируемый пост)
Зачем точка в конце 32 строки?


PM MAIL WWW ICQ Skype   Вверх
rondo157
Дата 4.6.2014, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.6.2014

Репутация: нет
Всего: нет



Код

<?php

if(!in_array($_SERVER['REMOTE_ADDR'],
  array('109.70.3.48', '109.70.3.146', '109.70.3.210'))) {
  header("HTTP/1.0 403 Forbidden");
  die("Error: Unknown IP");
}

$message_id = $_GET['message_id'];
$service_id = $_GET['service_id'];
$shortcode = $_GET['shortcode'];
$keyword = $_GET['keyword'];
$message = $_GET['message'];
$sender = $_GET['sender'];
$operator = $_GET['operator'];
$country = $_GET['country'];
$custom = $_GET['custom'];
$points = $_GET['points'];
$price = $_GET['price'];
$currency = $_GET['currency'];

$dbHost='localhost';
$dbName='newproject_bd_auth';
$dbUser='root';
$dbPass='';

$myConnect = mysql_connect($dbHost,$dbUser,$dbPass));
mysql_select_db($dbName,$myConnect);

$query= "UPDATE bg_user SET cash = cash + $points WHERE user_id = '$custom'";

mysql_close($myConnect);
?>


Как вы и сказали. Убрал точку в конце 32 строки и убрал 30-ю строчку.

Добавлено через 5 минут и 37 секунд
Теперь все правильно?
PM MAIL   Вверх
Aliance
Дата 4.6.2014, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Теперь синтаксической ошибки нет. Но есть логическая. Вы написали запрос - но не выполнили его.
Нужно после 30 строчки написать что-то типа такого:
Код

mysql_query($query, $myConnect);

PM MAIL WWW ICQ Skype   Вверх
rondo157
Дата 4.6.2014, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.6.2014

Репутация: нет
Всего: нет



Код

<?php

if(!in_array($_SERVER['REMOTE_ADDR'],
  array('109.70.3.48', '109.70.3.146', '109.70.3.210'))) {
  header("HTTP/1.0 403 Forbidden");
  die("Error: Unknown IP");
}

$message_id = $_GET['message_id'];
$service_id = $_GET['service_id'];
$shortcode = $_GET['shortcode'];
$keyword = $_GET['keyword'];
$message = $_GET['message'];
$sender = $_GET['sender'];
$operator = $_GET['operator'];
$country = $_GET['country'];
$custom = $_GET['custom'];
$points = $_GET['points'];
$price = $_GET['price'];
$currency = $_GET['currency'];

$dbHost='localhost';
$dbName='newproject_bd_auth';
$dbUser='root';
$dbPass='';

$myConnect = mysql_connect($dbHost,$dbUser,$dbPass));
mysql_select_db($dbName,$myConnect);

$query= "UPDATE bg_user SET cash = cash + $points WHERE user_id = '$custom'";

mysql_query($query, $myConnect);

mysql_close($myConnect);
?>


Вот. Теперь правильно?
PM MAIL   Вверх
Aliance
Дата 4.6.2014, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Выглядит правильно, запустите и проверьте.

Но запрос по прежнему уязвим к sql injection. Почитайте в гугле что это такое и как с этим бороться.
PM MAIL WWW ICQ Skype   Вверх
rondo157
Дата 4.6.2014, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.6.2014

Репутация: нет
Всего: нет



Выглядит то правильно, но по прежнему таблица cash остается неименной.
Есть еще предложения?
PM MAIL   Вверх
Aliance
Дата 4.6.2014, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Перед 32 строчкой вставьте это
Код

echo '<pre>'; var_dump($query); exit;

результат сюда скиньте.
PM MAIL WWW ICQ Skype   Вверх
rondo157
Дата 4.6.2014, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.6.2014

Репутация: нет
Всего: нет



Простите, какой результат? ничего не получилось. 

Код

<?php

if(!in_array($_SERVER['REMOTE_ADDR'],
  array('109.70.3.48', '109.70.3.146', '109.70.3.210'))) {
  header("HTTP/1.0 403 Forbidden");
  die("Error: Unknown IP");
}

$message_id = $_GET['message_id'];
$service_id = $_GET['service_id'];
$shortcode = $_GET['shortcode'];
$keyword = $_GET['keyword'];
$message = $_GET['message'];
$sender = $_GET['sender'];
$operator = $_GET['operator'];
$country = $_GET['country'];
$custom = $_GET['custom'];
$points = $_GET['points'];
$price = $_GET['price'];
$currency = $_GET['currency'];

$dbHost='127.0.0.1';
$dbName='newproject_db_auth';
$dbUser='root';
$dbPass='';

$myConnect = mysql_connect($dbHost,$dbUser,$dbPass));
mysql_select_db($dbName,$myConnect);

$query= "UPDATE bg_user SET cash = cash + $points WHERE user_id = '$custom'";
    
echo '<pre>'; var_dump($query); exit;

mysql_query($query, $myConnect);

mysql_close($myConnect);
?>


Вот что не так?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.1615 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.