#1 2009.06.14 18:53

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Помогите с фильтрацией

Вот есть например
$id = $_GET['id'];

id - может быть только число

помогите чтобы работала фильтрация символов, дайте функцию или что вписать?

Неактивен

#2 2009.06.14 19:15

JInn
Участник
Откуда: Север нашей Родины
Зарегистрирован: 2008.11.18
Сообщений: 120
Карма: 2
Профиль Веб-сайт

Re: Помогите с фильтрацией

Как то не очень понятно зачем тебе фильтрация...
Если чтобы в базу инъекцию не сделали, то можно так
function clean($text)
{
if (is_numeric($text)){$text = intval(trim($text));}
else{
$text = mysql_real_escape_string(trim($text));
}
return $text;
}

Пишешь $id = clean($_GET['id']);
А если, чтоб только число могло быть то может быть
$id = intval($_GET['id']);


Как все таки сложно быть ботом...

Неактивен

#3 2009.06.14 19:27

Akdmeh
Участник
Откуда: Киев и рядом;)
Зарегистрирован: 2008.11.30
Сообщений: 257
Карма: 9
Профиль Веб-сайт

Re: Помогите с фильтрацией

что бы $id было положительным числом(или ноль) хватит:
$id=abs(intval($_GET['id']));
Псле этого $id - положительное число или ноль


Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться сексwink

Неактивен

#4 2009.06.14 21:24

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Помогите с фильтрацией

Код:

1
2
3
4
5
function clean($text){
if (is_numeric($text)){$text = intval(trim($text));
}else{
$text = mysql_real_escape_string(trim($text));}
return $text;}

не робит...так же при запросе id=1' выдает ошибку

Код:

1
$id = intval($_GET['id']);

тоже не робит при запросе id=1' выдает ошибку

Код:

1
$id=abs(intval($_GET['id']));

тоже не робит при запросе id=1' выдает ошибку

Неактивен

#5 2009.06.14 21:32

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Помогите с фильтрацией

тебе intval достаточно. какая ошибка?

Неактивен

#6 2009.06.14 22:03

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Помогите с фильтрацией

выводит пустую страницу...

Неактивен

#7 2009.06.14 22:04

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Помогите с фильтрацией

полный код файла дай.

Неактивен

#8 2009.06.14 22:07

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Помогите с фильтрацией

правельно или нет?

Код:

1
2
3
4
5
6
7
8
9
10
11
// Загружаем ID сообщества
$id = intval($_GET['id']);
 
// Проверям на существование сообщества
if(mysql_result(mysql_query("SELECT COUNT(id) FROM `community_comm` where `id` = '$id' LIMIT 1"),0)){
 
тут код
 
}else{
// если сообщества нет нет
echo 'Сообщества не найдены';}

Неактивен

#9 2009.06.14 22:13

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Помогите с фильтрацией

ну вобщем да.

Неактивен

#10 2009.06.14 22:16

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Помогите с фильтрацией

Так вот при запросе id=1' выдаёт белую страницу, а можно чтобы выдавало что например ссобщество не найдено?

Неактивен

#11 2009.06.14 22:22

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Помогите с фильтрацией

не могет такого быть. проблема не в фильтрации этой переменной. что происходить если просто 1 передать?

Неактивен

#12 2009.06.14 22:23

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Помогите с фильтрацией

выдаёт сообщество, т.е. нормальный результат

Неактивен

#13 2009.06.14 22:31

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Помогите с фильтрацией

хз-хз... глоб переменные... магические кавычки... хз

Неактивен

#14 2009.06.14 22:33

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Помогите с фильтрацией

всё выключено
Добавлено спустя   7 минут  12 секунд:
вот я сам в недоумении, что не так. Уже пол дня голову ломаю. smile

Неактивен

#15 2009.06.14 23:52

Nbbt
Участник
Зарегистрирован: 2009.02.11
Сообщений: 44
Карма: 3
Профиль

Re: Помогите с фильтрацией

Код не видно, я с мобильного. Вроде на то, чтоб было число достаточно (int), там либо число - либо ошибка smile

Неактивен

#16 2009.06.15 11:09

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Помогите с фильтрацией

пробую $id=int($_GET['id']);
Также пустая страница даже при запросе id=1 без всяких символов ' > < " \

Неактивен

#17 2009.06.15 11:23

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Помогите с фильтрацией

функции int нету. $id = (int)$_GET['id']; так можно, но сути не меняет. проблема не в фильтрации этой переменной.

Неактивен

#18 2009.06.15 11:32

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Помогите с фильтрацией

тогда в чём? Ведь код верный, ты сам сказал. sad

Неактивен

#19 2009.06.15 11:35

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Помогите с фильтрацией

ты не весь код привел

Неактивен

#20 2009.06.15 11:47

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Помогите с фильтрацией

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// Только для регнутых
only_reg();
 
// Загружаем ID сообщества
$soo = intval($_GET['id']);
 
// Проверям на существование сообщества
if(mysql_result(mysql_query("SELECT COUNT(id) FROM `community_comm` where `id` = '$soo' LIMIT 1"),0)){
 
if(isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id']!=NULL){
if(!isset($_GET['list_user']) && !isset($_GET['enter']) && !isset($_GET['rules'])){
 
// заголовок страницы
$title = mysql_result(mysql_query("SELECT `name` FROM `community_comm` WHERE `id` = '".$soo."' LIMIT 1"),0);
$set['title'] = 'Сообщество '.$title.' &amp; '.$_SERVER['HTTP_HOST'];
include_once '../sys/inc/thead.php';
 
title();
aut();
 
if(isset($_GET['ok_enter'])){
msg('Вы успешно вступили в сообщество');}
if(isset($_GET['err_enter'])){
msg('В сообщество можно вступить только один раз.');}
 
if(isset($_GET['ok_out'])){
msg('Вы успешно покинули в сообщество');}
if(isset($_GET['err_out'])){
msg('Сообщество можно покинуть только один раз.');}
if(isset($_GET['err_admin'])){
msg('Админ не может покинуть своё сообщество.');}
 
$comm = mysql_fetch_array(mysql_query("SELECT * FROM `community_comm` WHERE `id` = '".$soo."' LIMIT 1"));
 
if($comm['status']==1){
echo '<img src="1.gif" alt=""/> ';
}else if($comm['status']==2){
echo '<img src="2.gif" alt=""/> ';}
echo '<span class="status"><b>'.$comm[name].'</b></span> <span class="ank_n">('.vremja($comm['time_create']).')</span><br/>';
echo '<span class="ank_n">Последнее обновление: '.vremja($comm['time_last_edit']).'</span><br/>';
echo '<b>ID группы</b>: '.$comm['id'].'<br/>';
$autor = mysql_fetch_array(mysql_query("SELECT * FROM `user` WHERE `id` = '".$comm['id_author']."' LIMIT 1"));
echo '<b>Администратор</b>: <a href="/info.php?id='.$comm['id_author'].'">'.$autor['nick'].'</a><br/>';
echo '<b>Ссылка сообщества</b>: <a href="http://'.$_SERVER['HTTP_HOST'].'/comm/'.$soo.'">http://'.$_SERVER['HTTP_HOST'].'/comm/'.$soo.'</a><br/>';
 
$url = "../sys/comm";
if(is_file("$url/$id.jpg")){
echo '<img src="'.$url.'/'.$soo.'.jpg" alt=""/><br/>';
}else if(is_file("$url/$id.gif")){
echo '<img src="'.$url.'/'.$soo.'.gif" alt=""/><br/>';
}else if (is_file("$url/$id.png")){
echo '<img src="'.$url.'/'.$soo.'.png" alt=""/><br/>';
}else if (isset($user) && $user['id'] == $comm['id_author']){
echo '<a href="upload.php?id='.$comm['id'].'">Загрузить логотип</a><br/>';}
 
echo '<div class="rowup">'.trim(br(bbcode(smiles(links(stripcslashes(htmlspecialchars($comm['about']))))))).'</div>';
 
$list_user = mysql_num_rows(mysql_query("SELECT `id` FROM `community_user_incomm` WHERE `cid` = '$comm[id]'"));
echo '<img src="/style/themes/'.$set['set_them'].'/comm/users.gif" alt="" class="icon"/> <a href="comm.php?id='.$comm['id'].'&amp;list_user">Участники</a> <span class="ank_n">('.$list_user.')</span><br/>';
$guest = mysql_num_rows(mysql_query("SELECT `id` FROM `group_board` WHERE `g` = '$soo'"));
echo '<img src="/style/themes/'.$set['set_them'].'/comm/guest.gif" alt="" class="icon"/> <a href="comm_guest.php?id='.$comm['id'].'">Гостевая</a> <span class="ank_n">('.$guest.')</span><br/>';
 
// Проверяем юзер участник сообщества
if(mysql_num_rows(mysql_query("SELECT `uid` FROM `community_user_incomm` WHERE `cid` = '$comm[id]' AND `uid` = '$user[id]'"))){
$forum = mysql_result(mysql_query("SELECT COUNT(*) FROM `community_forum_topics` WHERE `rid` = '$comm[id]'"),0);
echo '<img src="/style/themes/'.$set['set_them'].'/comm/forum.gif" alt="" class="icon"/> <a href="forum/index.php?cid='.$comm['id'].'">Форум</a> <span class="ank_n">('.$forum.')</span><br/>';}
 
if(mysql_result(mysql_query("SELECT COUNT(uid) FROM `community_user_incomm` where `uid` = '$user[id]' AND `cid` = '$soo'"),0)){
echo '[-] <a href="comm.php?id='.$comm['id'].'&amp;out">Покинуть сообщество</a><br/>';
}else{
echo '[+] <a href="comm.php?id='.$comm['id'].'&amp;enter">Вступить в сообщество</a><br/>';}
 
echo '&laquo;<a href="index.php">В разделы</a><br/>';}
 
 
// юзер покидает сообщество.
if(isset($_GET['out'])){
if(isset($user)){
// Проверям юзер уже покинул сообщество или нет.
if(mysql_result(mysql_query("SELECT COUNT(uid) FROM `community_user_incomm` where `uid` = '$user[id]' AND `cid` = '$soo'"),0)){
if(mysql_result(mysql_query("SELECT COUNT(id_author) FROM `community_comm` where `id_author` = '$user[id]' AND `id` = '$soo' LIMIT 1"),0)){
header("Location: comm.php?id=$soo&err_admin&".SID);
}else{
mysql_query("DELETE FROM `community_user_incomm` WHERE `uid` = '$user[id]' AND `cid` = '$soo'");
header("Location: comm.php?id=$soo&ok_out&".SID);}
}else{
header("Location: comm.php?id=$soo&err_out&".SID);}}}
 
// Список участников сообщества
if(isset($_GET['list_user'])){
$all_users = mysql_result(mysql_query("SELECT `name` FROM `community_comm` WHERE `id` = '".$soo."' LIMIT 1"),0);
$set['title'] = 'Список участников сообщества '.$all_users.' &amp; '.$_SERVER['HTTP_HOST']; // заголовок страницы
include_once '../sys/inc/thead.php';
 
title();
aut();
 
// Считаем колличество участников
$k_user = mysql_num_rows(mysql_query("SELECT `id` FROM `community_user_incomm` WHERE `cid` = '".$soo."'"));
$k_page = k_page($k_user,$set['p_str']);
$page = page($k_page);
$start = $set['p_str']*$page-$set['p_str'];
 
// Если участников нет.
if($k_user == 0){
echo 'В этом сообществе нет пока активных юзеров<br/>';
}else{
// если есть
$q4 = mysql_query("SELECT * FROM `community_user_incomm` WHERE `cid` = '".$soo."'");
while($user_comm = mysql_fetch_array($q4)){
if($num==1){
echo '<div class="rowdown">';
$num=0;
}else{
echo '<div class="rowup">';
$num=1;}
$users = mysql_fetch_array(mysql_query("SELECT * FROM `user` WHERE `id` = '$user_comm[uid]' LIMIT 1"));
echo '<img src="/style/themes/'.$set['set_them'].'/user/'.$users['pol'].'.png" alt=""/> ';
echo '<a href="/info.php?id='.$user_comm['uid'].'"><span style="color:'.$users['ncolor'].'">'.$users['nick'].'</span></a> '.online($user_comm['uid']).' <br/>';
echo '<span class="ank_n">Постов: '.$user_comm['activity'].'<span></div>';}}
 
echo '<div class="foot"><a href="comm.php?id='.$soo.'">Назад</a></div>';}
 
// юзер вступает в сообщество.
if(isset($_GET['enter'])){
if(isset($user)){
/*// Проверям юзер уже вступил в сообщество или нет.
if(mysql_result(mysql_query("SELECT COUNT(uid) FROM `community_user_incomm` where `uid` = '$user[id]' AND `cid` = '".$soo."'"),0)){*/
mysql_query("INSERT INTO `community_user_incomm` (`uid`, `cid`, `time`) VALUES ('$user[id]', '$soo', `time`)");
/*header("Location: comm.php?id=$id&err_enter");
}else{*/
header("Location: comm.php?id=$soo&ok_enter");}}/*}*/}
}else{
// если сообщества нет нет
$set['title'] = 'ERROR! &amp; '.$_SERVER['HTTP_HOST'];
include_once '../sys/inc/thead.php';
title();aut();
echo 'Сообщества не найдены<br/>';}

Вот весь код

Неактивен

#21 2009.06.15 11:53

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Помогите с фильтрацией

нуепт... там же еще много инклудов и вообще код запутанный
Добавлено спустя   1 минуту  55 секунд:
if(isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id']!=NULL){
эту строку убери и скобку ее закрывающую тоже
if(mysql_result(mysql_query("SELECT COUNT(id) FROM `community_comm` where `id` = '$soo' LIMIT 1"),0)){ замени на if(mysql_query('SELECT COUNT(id) FROM `community_comm` where `id` = '.$soo.' LIMIT 1')){

Неактивен

#22 2009.06.15 13:30

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Помогите с фильтрацией

спс помогло. Буду теперь знать. Как говориться на ошибках учаться smile

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.017 s