Проблем с скрипт

rutera24

Registered
Скрипта е следния.
PHP:
<?php 
include("config.php"); 
$date= $_REQUEST["date"];
$sender= $_REQUEST["sender"];
$keyword= $_REQUEST["keyword"];
$message = $_REQUEST["message"];
$number = $_REQUEST["number"];
$extid = $_REQUEST["extid"];

$smser_remote_addrs = array("79.124.67.10", "79.124.67.11");


if(in_array($_SERVER['REMOTE_ADDR'], $smser_remote_addrs)) {


$sql = mysql_query("UPDATE gora SET lista=lista+10 , sms=sms+1 WHERE name like '".$username."%'"); 
$sql2 = mysql_query("UPDATE admin SET sms=sms+1, sms_to4ki= sms_to4ki+1"); 


 $sms_reply = "Vie uspeshno dobavihte 10 to4ki.";


 

 file("http://www.smser.eu/service/response.php?extid=$extid&number=$sender&message=".urlencode($sms_reply));
        
        echo "OK"; //Tova ne se promenq
}

?>

Проблема е следния вместо да добавя само в поле lista и на един потребител то добавя на всички потребители.

[sql]
CREATE TABLE IF NOT EXISTS `gora` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(60) NOT NULL,
`lista` int(11) NOT NULL,
`sms` int(11) NOT NULL,
`vip` int(11) NOT NULL,
`mail` varchar(60) NOT NULL,
`password` varchar(255) NOT NULL,
`skype` varchar(255) NOT NULL,
`lvl` int(11) NOT NULL,
`ip` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
[/sql]

системата за смс-и е от smser
 
PHP:
<?php 
include("config.php"); 
$date= $_REQUEST["date"];
$sender= $_REQUEST["sender"];
$keyword= $_REQUEST["keyword"];
$message = $_REQUEST["message"];
$number = $_REQUEST["number"];
$extid = $_REQUEST["extid"];

$smser_remote_addrs = array("79.124.67.10", "79.124.67.11");


if(in_array($_SERVER['REMOTE_ADDR'], $smser_remote_addrs)) {


$sql = mysql_query("UPDATE gora SET lista=lista+10 , sms=sms+1 WHERE name = '".$username."'"); 
$sql2 = mysql_query("UPDATE admin SET sms=sms+1, sms_to4ki= sms_to4ki+1"); 


 $sms_reply = "Vie uspeshno dobavihte 10 to4ki.";


 

 file("http://www.smser.eu/service/response.php?extid=$extid&number=$sender&message=".urlencode($sms_reply));
        
        echo "OK"; //Tova ne se promenq
}

?>
 
Не става нищо когато го изтествам.

Минава като цяло проверката и дава "ок" но не добавя в базата.

Пробвах и по този начин.

PHP:
$sql = mysql_query("UPDATE gora SET lista=lista+10 , sms=sms+1 WHERE name = '".$name."'");
 
Защо не ползваш id, за да установиш кой е потребителя? Да сравняваш с like по име крие опасност ако имаш двама потребителя с подобни имена например. Във втората заявка си забравил where клаузата.

Ето как SQL-а би трябвало да стане според мен, но с презумпцията, че имаш някакъв по-точен идентификатор на потребителите от името им:
PHP:
// Примерно 5. В таблицата сравнявам тази колона с
// измислената "user_id". Ти трябва да я свържеш по-точно.
$id = 5;

$sql = mysql_query( "
    update
        `gora`
    set
        `list` = `lista` + 10,
        `sms` = `sms` + 1
    where
        `user_id` = '{$id}'
;" );

$sql2 = mysql_query( "
    update
        `admin`
    set
        `sms` = `sms` + 1,
        `sms_to4ki` = `sms_to4ki` + 1
    where
        `user_id` = '{$id}'
;" );
 
И между другото $_REQUEST метода е много опасен, защото можеш да получиш и от POST, и от GET данни. Така че, реши къде ще подаваш данните(дали в URL адреса(GET) или във форма(POST)).
 
Е, какво по-показно от примерен код? Не мога да ти напиша скрипта, защото не знам с какво разполагаш, пък и не това е целта.

Не знам каква информация получаваш, но според мен ще е добре да е ID на потребителя, ако въобще има такова. Не е ясно как изглежда таблицата с потребителите, не виждам и как свързваш таблиците gora и admin с потребителите. Чрез name ли? В такъв случай това поле уникално ли е за таблицата на потребителите?
 
ЪЪ аз колкото гледах най ми се наби на научи че във това където си дал никъде няма променлива $username, предполагам потребителите пращат смс със текст името си в играта та вместо $username във заявката напиши $message. Защото ако username не е дефинирано то се получава добави точки на всеки който ник е нищо(променливата)каквото и да е(от %)
 
В крайна сметка се оправих но с друга проверка.

Даже друга система ползвах.
Благодаря на всички оделеното време.
 

Back
Горе