Ayola.net
Новости: В связи с обилием спама, постинг на форуме временно закрыт.

Для связи с поддержкой используйте тикеты в панели управления.
 
*
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь. Декабрь 18, 2017, 03:21:25


Войти


Страниц: [1]
  Печать  
Автор Тема: Нужна помощь  (Прочитано 9762 раз)
0 Пользователей и 1 Гость смотрят эту тему.
swer
Просветлённый
****

Карма: 14
Сообщений: 460


Просмотр профиля WWW
« : Июль 17, 2008, 05:13:37 »

Значит так,пишу к скрипту знакомств голосование(рейтинг юзверов)
Код:
<?php
mysql_connect
('sql-2.ayola.net''логин''пасс');
mysql_select_db('база');
$l $_GET['l'];
//Получаем записи
$res mysql_query("SELECT point FROM zn_anket WHERE login='$l'")
or die(
"Invalid query: " mysql_error());
$r mysql_fetch_array($res);
$p $r['point'];
$k $r['kol'];
$l $_GET['l'];
$gp $_GET['point'];
echo 
"<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=1>1</a>|<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=2>2</a>";
if(
$gp==1);{
$point==$p++;
$kol==$k++;}
if(
$gp==2);{
$point==$p+2;
$kol==$k++;}
mysql_query("INSERT INTO zn_anket(point, kol) VALUES ('$point' '$kol')");

?>

в обшем то писал ляпом,но получилос...точнее некоректно..
Я добавил к БД доп записи point(количество баллов) и kol(количество проголосовавших)
скрипт вместо того что бы добавит к секциям point и kol каждого id по баллу он создает новые ид с уже прибавленными на 1 в поинте и кол,как сделать праильно не пойму и гугл я уж все облазил=(
Записан

Homo homini lupus est!(Человек человеку волк)
Фильмы DivX->Закачаешся>
Astraller™
Маэстро
*****

Карма: 151
Сообщений: 1389

Вселенское зло


Просмотр профиля WWW
« Ответ #1 : Июль 17, 2008, 12:14:50 »

Зарание сори за лекторский тон, но:

1) INSERT означает "Вставить". Вставить новую запись!
2) Есть команда UPDATE которая означает "изменить". Которая собственно и изменяет.
3) Не надо считать простые вычисления в скрипте - это долго. Заставьте считать MySQL:
Код:
<?php
mysql_connect
('sql-2.ayola.net''&#1083;&#1086;&#1075;&#1080;&#1085;''&#1087;&#1072;&#1089;&#1089;');
mysql_select_db('&#1073;&#1072;&#1079;&#1072;');
$l $_GET['l'];
$gp $_GET['point'];
echo 
"<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=1>1</a>|<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=2>2</a>";
if(
$gp==1){
mysql_query("UPDATE `zn_anket` SET `point`=`point`+1, `kol`=`kol`+1 WHERE `login` = '".$l."'") or die("Invalid query: " mysql_error());
}elseif(
$gp==2){
mysql_query("UPDATE `zn_anket` SET `point`=`point`+2, `kol`=`kol`+1 WHERE `login` = '".$l."'") or die("Invalid query: " mysql_error());
}
?>
« Последнее редактирование: Июль 17, 2008, 22:38:18 от Astraller™ » Записан

Гамлета здесь больше нет. Осталась только тень.
swer
Просветлённый
****

Карма: 14
Сообщений: 460


Просмотр профиля WWW
« Ответ #2 : Июль 17, 2008, 18:06:48 »

Хмм,какая то ошибка,тк у мя белый экран....проблема начинается после if($gp==1);
Записан

Homo homini lupus est!(Человек человеку волк)
Фильмы DivX->Закачаешся>
Astraller™
Маэстро
*****

Карма: 151
Сообщений: 1389

Вселенское зло


Просмотр профиля WWW
« Ответ #3 : Июль 17, 2008, 22:38:42 »

Поправил, не доглядел. Сори.

Но этот баг был еще у вас Улыбающийся
Записан

Гамлета здесь больше нет. Осталась только тень.
swer
Просветлённый
****

Карма: 14
Сообщений: 460


Просмотр профиля WWW
« Ответ #4 : Июль 18, 2008, 06:33:43 »

хехе да у мя там куча багов было=))
Спасибо за помошь.....начинаю вникать в суть mysql,до этого файлами баловался=)))
Кстати незнаешь как можно сделать чтоб юзвер голосовал ток 1 раз...можно с помошью куков и еше читал про ф-ю в мускуле который не дает записывать больше 1 раза в день...
Записан

Homo homini lupus est!(Человек человеку волк)
Фильмы DivX->Закачаешся>
elCreator
Старший Новичёк
**

Карма: 5
Сообщений: 97


Просмотр профиля WWW
« Ответ #5 : Июль 18, 2008, 22:48:05 »

$l = $_GET['l'];
//Получаем записи
$res = mysql_query("SELECT point FROM zn_anket WHERE login='$l'");

А необходимость защиты от SQL-инъекций уже отменили? Подмигивающий
Записан


играет сейчас в моем Winamp'е
-Deadly-
Вникающий
***

Карма: 8
Сообщений: 128



Просмотр профиля WWW
« Ответ #6 : Июль 19, 2008, 14:45:18 »

В смысле?
Записан
elCreator
Старший Новичёк
**

Карма: 5
Сообщений: 97


Просмотр профиля WWW
« Ответ #7 : Июль 19, 2008, 17:40:56 »

В смысле любой желающий может набрать в строке браузера _http://site.ru/script.php?mode=menu&login=blabla&pas=blabla&l=' OR 1=1 UNION DROP TABLE zn_anket'/*
и снести все данные из таблицы. Ну или заменить DROP TABLE zn_anket по вкусу и выполнить абсолютно любые действия на сайте.
Данным из $_GET[] нельзя доверять - нужна хотя бы элементарная их фильтрация
$_GET['l'] = htmlspecialchars ($_GET['l'], ENT_QUOTES); , и то этого бывает недостаточно и вводятся проверки на существование переменной, другие символы, кроме кавычки - в интернете очень много примеров есть. И если с кавычкой еще справляется magic_quotes_on, то от остальных ошибок, вызываемых недостаточной фильтрацией, это не спасет.
« Последнее редактирование: Июль 19, 2008, 17:45:18 от elCreator » Записан


играет сейчас в моем Winamp'е
swer
Просветлённый
****

Карма: 14
Сообщений: 460


Просмотр профиля WWW
« Ответ #8 : Июль 19, 2008, 21:56:04 »

В смысле любой желающий может набрать в строке браузера _http://site.ru/script.php?mode=menu&login=blabla&pas=blabla&l=' OR 1=1 UNION DROP TABLE zn_anket'/*
и снести все данные из таблицы. Ну или заменить DROP TABLE zn_anket по вкусу и выполнить абсолютно любые действия на сайте.
Данным из $_GET[] нельзя доверять - нужна хотя бы элементарная их фильтрация
$_GET['l'] = htmlspecialchars ($_GET['l'], ENT_QUOTES); , и то этого бывает недостаточно и вводятся проверки на существование переменной, другие символы, кроме кавычки - в интернете очень много примеров есть. И если с кавычкой еще справляется magic_quotes_on, то от остальных ошибок, вызываемых недостаточной фильтрацией, это не спасет.
Бл**я я совсем забыл,спс за напоминание...иногда реал втормоз, займусь обязательно..
« Последнее редактирование: Июль 19, 2008, 22:00:34 от swer » Записан

Homo homini lupus est!(Человек человеку волк)
Фильмы DivX->Закачаешся>
swer
Просветлённый
****

Карма: 14
Сообщений: 460


Просмотр профиля WWW
« Ответ #9 : Июль 23, 2008, 02:55:52 »

Вот попробовал такой код
$res = mysql_query("SELECT `gp`, `login` FROM `zn_anket`")
    or die("Invalid query: " . mysql_error());
$r = mysql_fetch_array($res);
$gl = $r['gp'];
$log = $r['login'];
$_GET['l'] = htmlspecialchars ($_GET['l'], ENT_QUOTES);
$_GET['login'] = htmlspecialchars ($_GET['login'], ENT_QUOTES);
$l2 = $_GET['login'];
$l=$_GET['l'];
$gp = $_GET['point'];
echo "<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=1>1</a>|<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=2>2</a>|<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=3>3</a>|<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=4>4</a>|<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=5>5</a>";
if($log==$gl){
echo "Вы уже проголосовали за эту анкету";
}else {
if($gp==1){
mysql_query("UPDATE `zn_anket` SET `point`=`point`+1, `kol`=`kol`+1, `gp`=`$l2` WHERE `login` = '".$l."'") or die("Invalid query: " . mysql_error());
}elseif($gp==2){
mysql_query("UPDATE `zn_anket` SET `point`=`point`+2, `kol`=`kol`+1 WHERE `login` = '".$l."'") or die("Invalid query: " . mysql_error());
}elseif($gp==3){
mysql_query("UPDATE `zn_anket` SET `point`=`point`+3, `kol`=`kol`+1 WHERE `login` = '".$l."'") or die("Invalid query: " . mysql_error());
}elseif($gp==4){
mysql_query("UPDATE `zn_anket` SET `point`=`point`+4, `kol`=`kol`+1 WHERE `login` = '".$l."'") or die("Invalid query: " . mysql_error());
}elseif($gp==5){
mysql_query("UPDATE `zn_anket` SET `point`=`point`+5, `kol`=`kol`+1 WHERE `login` = '".$l."'") or die("Invalid query: " . mysql_error());
}}
?>
Размышления таковы что бы с поинтами и кол проголосовавших записывались и логин за который был отдан голос и при попытке повторно проголосовать выводилось сообщение о том что он уже голосовал,но вот выдает ошибку( Invalid query: Unknown column 'alina' in 'field list'  если login=alina)...что не так написал
Записан

Homo homini lupus est!(Человек человеку волк)
Фильмы DivX->Закачаешся>
-Deadly-
Вникающий
***

Карма: 8
Сообщений: 128



Просмотр профиля WWW
« Ответ #10 : Июль 23, 2008, 03:59:24 »

$gl = $r['gp'];
$gp = $_GET['point'];
Вы их местами не попутали случайно?
и что храниться в переменных gp & gl?
Записан
swer
Просветлённый
****

Карма: 14
Сообщений: 460


Просмотр профиля WWW
« Ответ #11 : Июль 23, 2008, 14:07:21 »

нет не перепутал
в $gl это ячейка gp(записываются логины за которых отдан голос)
$gp значения point (&point=1...)
Хотел сделать с помощью кокиес,но подумал что не все мобилы принимают его(запрет на установку),а др ничего в голову не лезит...
Записан

Homo homini lupus est!(Человек человеку волк)
Фильмы DivX->Закачаешся>
atimur
Просветлённый
****

Карма: 59
Сообщений: 990


Живу в SanCity


Просмотр профиля WWW
« Ответ #12 : Июль 23, 2008, 14:18:35 »

Хотел сделать с помощью кокиес,но подумал что не все мобилы принимают его(запрет на установку),а др ничего в голову не лезит...
Пользуйтесь сессиями.
Записан

- Правда, она всегда глаза режет...
- Капча - Идите лесом...
swer
Просветлённый
****

Карма: 14
Сообщений: 460


Просмотр профиля WWW
« Ответ #13 : Июль 23, 2008, 16:36:40 »

Хмм... незнаю,но врод сесии это 13 значное число генерируюшийся ф-ей uniqid(" ") которая записывается (к прим) в ячейку sess и в куки( setcookies ("userid", $id, time( )+2592000); ) и при совпадений выводится инфа....но опять же не подходит по вышеупомянутым причинам...
или же я путаю сессии с чем то др..введите в курс дела=))
Записан

Homo homini lupus est!(Человек человеку волк)
Фильмы DivX->Закачаешся>
atimur
Просветлённый
****

Карма: 59
Сообщений: 990


Живу в SanCity


Просмотр профиля WWW
« Ответ #14 : Июль 23, 2008, 16:42:55 »

Код:
<?php
session_start();
$_SESSION['param'] = 'значение';
print $_SESSION['param'];
?>
http://www.php.su/articles/?cat=protocols&page=009
Записан

- Правда, она всегда глаза режет...
- Капча - Идите лесом...
swer
Просветлённый
****

Карма: 14
Сообщений: 460


Просмотр профиля WWW
« Ответ #15 : Июль 23, 2008, 16:58:49 »

Спс,будем изучать=)+
Записан

Homo homini lupus est!(Человек человеку волк)
Фильмы DivX->Закачаешся>
swer
Просветлённый
****

Карма: 14
Сообщений: 460


Просмотр профиля WWW
« Ответ #16 : Июль 23, 2008, 21:01:17 »

Прочитал,и не понял каким образом можно реализовать данный метод в моем случае.Если можете помогите разобратся с тем что бы записывать логины в таблицу-так (на мой взгляд) лучше всего...
Записан

Homo homini lupus est!(Человек человеку волк)
Фильмы DivX->Закачаешся>
Astraller™
Маэстро
*****

Карма: 151
Сообщений: 1389

Вселенское зло


Просмотр профиля WWW
« Ответ #17 : Июль 23, 2008, 21:43:04 »

Прочитал,и не понял каким образом можно реализовать данный метод в моем случае.Если можете помогите разобратся с тем что бы записывать логины в таблицу-так (на мой взгляд) лучше всего...
1) Сессия тут, действительно не поможет.
2) Куки годны только для периодических действий.
3) В чем проблема записи логинов в таблицу?
Записан

Гамлета здесь больше нет. Осталась только тень.
swer
Просветлённый
****

Карма: 14
Сообщений: 460


Просмотр профиля WWW
« Ответ #18 : Июль 23, 2008, 21:51:51 »

Выдает такое сообщение Invalid query: Unknown column 'swer' in 'field list' (Если логин swer)
Записан

Homo homini lupus est!(Человек человеку волк)
Фильмы DivX->Закачаешся>
Astraller™
Маэстро
*****

Карма: 151
Сообщений: 1389

Вселенское зло


Просмотр профиля WWW
« Ответ #19 : Июль 23, 2008, 22:01:27 »

Выдает такое сообщение Invalid query: Unknown column 'swer' in 'field list' (Если логин swer)
Эм... покажите ВЕСЬ запрос.
Записан

Гамлета здесь больше нет. Осталась только тень.
swer
Просветлённый
****

Карма: 14
Сообщений: 460


Просмотр профиля WWW
« Ответ #20 : Июль 23, 2008, 22:19:43 »

Код выше убло написано....
Код:
$res = mysql_query("SELECT `gp`, `login` FROM `zn_anket`")
    or die("Invalid query: " . mysql_error());
$r = mysql_fetch_array($res);
$gl = $r['gp'];
$log = $r['login'];
$_GET['l'] = htmlspecialchars ($_GET['l'], ENT_QUOTES);
$_GET['login'] = htmlspecialchars ($_GET['login'], ENT_QUOTES);
$l2 = $_GET['login'];
$l=$_GET['l'];
$gp = $_GET['point'];
echo "<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=1>1</a>|<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=2>2</a>|<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=3>3</a>|<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=4>4</a>|<a href = ?mode=menu&login=$login&pas=$pass&l=$login&point=5>5</a>";
if($log==$gl){
echo "Вы уже проголосовали за эту анкету";
}else {
if($gp==1){
mysql_query("UPDATE `zn_anket` SET `point`=`point`+1, `kol`=`kol`+1, `gp`=`$l2` WHERE `login` = '".$l."'") or die("Invalid query: " . mysql_error());
}elseif($gp==2){
mysql_query("UPDATE `zn_anket` SET `point`=`point`+2, `kol`=`kol`+1 WHERE `login` = '".$l."'") or die("Invalid query: " . mysql_error());
}elseif($gp==3){
mysql_query("UPDATE `zn_anket` SET `point`=`point`+3, `kol`=`kol`+1 WHERE `login` = '".$l."'") or die("Invalid query: " . mysql_error());
}elseif($gp==4){
mysql_query("UPDATE `zn_anket` SET `point`=`point`+4, `kol`=`kol`+1 WHERE `login` = '".$l."'") or die("Invalid query: " . mysql_error());
}elseif($gp==5){
mysql_query("UPDATE `zn_anket` SET `point`=`point`+5, `kol`=`kol`+1 WHERE `login` = '".$l."'") or die("Invalid query: " . mysql_error());
}}
?>
Хотя чувствую что логика неправильная....да и незнаю какого рода таблицу надо сделал такое
ТипДокументация: text
Длина/значения:1000
Ноль:null
Записан

Homo homini lupus est!(Человек человеку волк)
Фильмы DivX->Закачаешся>
Astraller™
Маэстро
*****

Карма: 151
Сообщений: 1389

Вселенское зло


Просмотр профиля WWW
« Ответ #21 : Июль 23, 2008, 22:22:24 »

Код выше убло написано....
Проблема в этой строке:
Код:
mysql_query("UPDATE `zn_anket` SET `point`=`point`+1, `kol`=`kol`+1, `gp`=`$l2` WHERE `login` = '".$l."'") or die("Invalid query: " . mysql_error());
Вы поставили не те ковычки, правильно будет так:
Код:
mysql_query("UPDATE `zn_anket` SET `point`=`point`+1, `kol`=`kol`+1, `gp`= '".$l2."' WHERE `login` = '".$l."'") or die("Invalid query: " . mysql_error());
Записан

Гамлета здесь больше нет. Осталась только тень.
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.13 | SMF © 2006, Simple Machines LLC

2003-2008 © ООО "Инфотур" - Бесплатный хостинг Ayola.net
Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Страница сгенерирована за 0.101 секунд. Запросов: 17.