[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Протестируйте каталог сайтов
New Guest
Страница вывода категорий


<?php

include ("conf.php") ;

$cat = $_GET['cat'] ;

$cat = preg_replace ("/[^0-9]/", "", $cat) ;

echo "<h4 align='center'>Каталог сайтов</h4>" ;

if (!$cat)
{

$res = "SELECT * FROM `cat`" ;

$query = mysql_query ($res) ;

while ($row = mysql_fetch_array ($query))
{
echo "<div align='center'>
<a href='http://test1.ru/katalog/index.php?cat=
$row[id]'>".$row[cat_name]."</a>
<br /><br />
</div>"
;
}

}

else
{
$res2 = "SELECT * FROM `sites`
WHERE `cat_id` ="
.(int)$_GET['cat'] ;

$query2 = mysql_query ($res2) ;

if (!mysql_num_rows ($query2))
{
echo "<div align='center'>В данной категории нет сайтов</div>" ;
}
else
{

while ($row2 = mysql_fetch_array ($query2))
{
echo "<div align='center'>
<a href='http://
$row2[url]'>".$row2[title]."</a>
"
;
}
}
}


echo "<div align='center'>
<span style='border-top:1px dotted #000; font-size:12px'><a href='add.php'>Добавить сайт</a></span>
</div>"
;

?>







Спустя 30 минут, 9 секунд (2.09.2010 - 13:47) linker написал(а):
$cat = isset($_GET['cat']) ? abs((integer)$_GET['cat']) : 0;
while ($row = mysql_fetch_assoc($query))
{
echo '<div align="center">
<a href="http://test1.ru/katalog/index.php?cat='
. $row['id'] . '">' . $row['cat_name'] . '</a><br /><br />
</div>'
;
}
$res2 = "SELECT * FROM `sites` WHERE `cat_id` = " . $cat;
if (!mysql_num_rows ($query2))
echo '<div align="center">В данной категории нет сайтов</div>';
else
{
while ($row2 = mysql_fetch_assoc($query2))
{
echo '<div align="center">
<a href="http://'
. $row2['url'] . '">' . $row2['title'] . '</a>';
}
}
А еще лучше, методом процедурного программирования
<?php
include ("conf.php");

function GetSites($cat)
{
$query = "SELECT * FROM `cat`" . (($cat) ? " WHERE `cat` = " . $cat : "");
return mysql_query($query);
}

$cat = isset($_GET['cat']) ? abs((integer)$_GET['cat']) : 0;
echo '<h4 align="center">Каталог сайтов</h4>';
$result = GetSites($cat);
if (mysql_num_rows($result))
{
while($site = mysql_fetch_assoc($result))
{
...
}
}

else
echo '';
...

?>

Спустя 11 минут, 18 секунд (2.09.2010 - 13:58) Guest написал(а):
linker, спасибо!

А мой вариант плохой? Уязвимый?

Спустя 1 минута, 41 секунда (2.09.2010 - 14:00) linker написал(а):
Длиннее, тяжелее, медленнее. На счет уязвимостей, вполне возможно, раз существует возможность добавлять сайты.

Спустя 1 минута, 18 секунд (2.09.2010 - 14:01) Guest написал(а):
ясно, а в моем примере sql-инъекция прошла бы?

Спустя 2 минуты, 43 секунды (2.09.2010 - 14:04) linker написал(а):
Нет. Возможны XSS.

Спустя 2 минуты, 1 секунда (2.09.2010 - 14:06) Guest написал(а):
а как от них защититься?

Спустя 14 минут, 13 секунд (2.09.2010 - 14:20) linker написал(а):
Фильтровать добавление сайтов и выводить сайты через htmlspecailchars().

Спустя 5 минут, 28 секунд (2.09.2010 - 14:26) Guest написал(а):
а мой код разве не достаточно фильтрует?

Спустя 1 минута, 42 секунды (2.09.2010 - 14:28) Guest написал(а):
вот так можно выводить через htmlspecialchars?



while ($row2 = mysql_fetch_array ($query2))
{
echo "<div align='center'>
<a href='http://
$row2[url]'>".htmlspecialchars($row2[title])."</a>
"
;
}







Спустя 1 минута, 1 секунда Guest написал(а):
то есть так



while ($row2 = mysql_fetch_assoc($query2))
{
echo '<div align="center">
<a href="http://'
. $row2['url'] . '">' . htmlspecialchars($row2['title']) . '</a>';
}

Спустя 5 минут, 29 секунд (2.09.2010 - 14:33) linker написал(а):
И $row2['url'] тоже.

Спустя 15 минут, 20 секунд (2.09.2010 - 14:48) Guest написал(а):
А вот файл добавления сайтов


<?php

include ("conf.php") ;

$title = $_POST['title'] ;

$title = trim ($title) ;

$title = substr ($title, 0, 20) ;

$url = $_POST['url'] ;

$url = trim ($url) ;

$url = substr ($url, 0, 20) ;

$cat_id = (int)$_POST['cat_id'] ;

if (get_magic_quotes_gpc ())
{
$title = stripslashes ($title) ;

$url = stripslashes ($url) ;
}

$res3 = "SELECT * FROM `sites`
WHERE `title` = '"
.mysql_real_escape_string ($title)."'
OR `url` = '"
.mysql_real_escape_string ($url)."'" ;

$query3 = mysql_query ($res3) ;

if ($_REQUEST ['sub2'])
{
if (mysql_num_rows ($query3))
{
echo "Этот сайт уже есть" ;
}
else
{
if (empty ($title))
{
echo "Вы не ввели название сайта<br />" ;
}

if (empty ($url))
{
echo "Вы не ввели адрес сайта<br />" ;
}

if (empty ($cat_id))
{
echo "Вы не указали категорию" ;
}

if (!preg_match ("/[a-z0-9_-]\.[a-z]/i", $url))
{
echo "Неверный формат адреса" ;
}
else
{
if ($title and $cat_id)
{
$ins = "INSERT INTO `sites` (`title`, `url`, `data`, `cat_id`)
VALUES ('"
.mysql_real_escape_string ($title)."',
'"
.mysql_real_escape_string ($url)."',
NOW(),

$cat_id)" ;

$query4 = mysql_query ($ins) ;

if ($query4)
{
echo "Сайт успешно добавлен" ;
}
}
}

}



}




?>



<form action="" method="post">

<p><label>
Введите название сайта<br /></label>
<input
type="text" name="title" size="20" maxlength="20" />
</p>

<p><label>
Введите адрес сайта<br /></label>
<input
type="text" name="url" size="20" maxlength="20" /> без http:// пример: phpforum.ru
</p>

<p><select
size="1" name="cat_id">
<option
selected="selected" disabled="disabled">Выберите категорию</option>
<option
value="1">Политические</option>
<option
value="2">Персональные</option>
<option
value="3">Развлекательные</option>
<option
value="4">Религиозные</option>
</select>
</p>



<input
type="submit" name="sub2" value="Добавить" />


</form>

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.