WapStyle » 2009.06.14 18:53

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

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

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

JInn » 2009.06.14 19:15

Как то не очень понятно зачем тебе фильтрация...
Если чтобы в базу инъекцию не сделали, то можно так
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']);

Akdmeh » 2009.06.14 19:27

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

WapStyle » 2009.06.14 21:24

Код:

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' выдает ошибку

Gemorroj » 2009.06.14 21:32

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

WapStyle » 2009.06.14 22:03

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

Gemorroj » 2009.06.14 22:04

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

WapStyle » 2009.06.14 22:07

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

Код:

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 'Сообщества не найдены';}
Gemorroj » 2009.06.14 22:13

ну вобщем да.

WapStyle » 2009.06.14 22:16

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

Gemorroj » 2009.06.14 22:22

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

WapStyle » 2009.06.14 22:23

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

Gemorroj » 2009.06.14 22:31

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

WapStyle » 2009.06.14 22:33

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

Nbbt » 2009.06.14 23:52

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

WapStyle » 2009.06.15 11:09

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

Gemorroj » 2009.06.15 11:23

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

WapStyle » 2009.06.15 11:32

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

Gemorroj » 2009.06.15 11:35

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

WapStyle » 2009.06.15 11:47

Код:

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/>';}

Вот весь код

Gemorroj » 2009.06.15 11:53

нуепт... там же еще много инклудов и вообще код запутанный
Добавлено спустя   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')){

WapStyle » 2009.06.15 13:30

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