|
|
|
| Есть скрипт который отвечает за добавление в базу айпи (бан) вот он
<?php
//Получаем IP
if(getenv('HTTP_X_FORWARDED_FOR'))
{$ip = getenv('HTTP_X_FORWARDED_FOR');}
elseif(getenv('REMOTE_ADDR'))
{$ip = getenv('REMOTE_ADDR');}
//Соединяемся с БД
$host = "";
$user = "";
$pass = "";
$db = "";
$connect = @mysql_connect("$host", "$user","$pass");
@mysql_select_db("$db", $connect);
if($_POST['del_ip']){
$del_ip=$_POST['del_ip'];
$query = "DELETE FROM `ipban` WHERE `id` = $del_ip";
$result = @mysql_query($query);
}
//Выводим форму
if($_POST['ips'] == NULL)
{echo"
<form action method='post'>
<input type='name' name='ips'>
<input type='submit' value='Забанить'>
</form>
<form action method='post'>
<input type='name' name='del_ip'>
<input type='submit' value='Удалить'>
</form>";
}
else{
$ips = htmlspecialchars($_POST['ips']);
//Делаем запрос на добавлние IP в блэк
$query = "INSERT INTO `ipban` VALUES(NULL, '$ips')";
$result = @mysql_query($query);
if(!$result) {echo"Ошибка!";}
else{echo"IP $ips забанен!";}
}
?>
|
Добавление айпи в базу работает,а вот удаление из базы айпи неработает почему то,и еще при запуске этого скрипта выскакивают ошибки
Notice: Undefined index: del_ip in /home/----/-----/www/ban/ban.php on line 15
Notice: Undefined index: ips in /home/------/----/www/ban/ban.php on line 21
так же когда пытаюсь удалить айпи с бана пишет ошибку
Notice: Undefined index: ips in /home/----/-----/www/ban/ban.php on line 21
|
где неправильно записан запрос на удаление айпи с базы ? | |
|
|
|
|
|
|
|
для: OREON
(09.02.2013 в 00:37)
| | Эти замечания сообщают, что у вас отсутствуют элементы массива $_POST с такими именами. Вместо
испльзуйте
if(isset($_POST['del_ip']))
|
чтобы проверить существует ли такая переменная. У вас судя по всему не происходит передача $_POST данных. Проверьте, что у вас в массиве $_POST при помощи конструкции
<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(09.02.2013 в 07:16)
| | >Эти замечания сообщают, что у вас отсутствуют элементы массива $_POST с такими именами. Вместо
>
>испльзуйте
>
if(isset($_POST['del_ip']))
|
>чтобы проверить существует ли такая переменная. У вас судя по всему не происходит передача $_POST данных. Проверьте, что у вас в массиве $_POST при помощи конструкции
>
<?php
> echo "<pre>";
> print_r($_POST);
> echo "</pre>";
>?>
|
При такой проверке выдало
ну и так же ошибка осталась в в стороке 21 в запросе
if($_POST['ips'] == NULL)
|
Таблица в базе создана с двумя полями
CREATE TABLE `ipban` (
`id` int NOT NULL auto_increment,
`ip` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
|
| |
|
|
|
|
|
|
|
для: OREON
(09.02.2013 в 09:26)
| | Notice - это не ошибка, а замечание.
Notice: Undefined index: del_ip in /home/----/-----/www/ban/ban.php on line 15
| говорит о том, что вы пытаетесь обратиться к не существующему индексу массива.
Следовательно оно будет возникать при каждой попытке его прочитать.
Вариантов три:
1 - ИМХО нежелательный - отключить нотисы. Для этого в начале скрипта прописать:
<?
error_reporting(E_ALL ^ E_NOTICE);
|
2 - ИМХО длинный - каждый раз при обращении к соответствующему элементу проверять существует ли он:
<?
if( key_exists('del_ip',$_POST) && $_POST['del_ip'] ){.....}
|
3 - я так делаю - в начале скрипта проверять существование индекса и, если нет, то объявить его:
<?
if( !key_exists('del_ip',$_POST) ) $_POST['del_ip'] = null;
|
| |
|
|
|
|
|
|
|
для: Sfinks
(09.02.2013 в 10:33)
| | Вариант 4:
<?
$_POST['del_ip'] = isset($_POST['del_ip']) ? (exp)$_POST['del_ip'] : null;
|
| |
|
|
|
|
|
|
|
для: confirm
(09.02.2013 в 10:49)
| | Cпасибо за помощь,ошибок нет,но айпи с базы оно всеравно не удаляет, тыкните носом где ошибка в коде? | |
|
|
|
|
|
|
|
для: OREON
(09.02.2013 в 15:07)
| | ошибок нет
для поиска ошибок и отладки уберите всех собак @ из кода
вот эту строку
$ips = htmlspecialchars($_POST['ips']);
|
заменить на
$ips = mysql_real_escape_string($_POST['ips']);
|
в зависимости от версии сервера, может потребоваться отключить магические кавычки | |
|
|
|
|
|
|
|
для: Valick
(09.02.2013 в 15:29)
| | Так я и ненашел как редактировать свой топик,поэтому зделал так
<?php
//Получаем IP
if(getenv('HTTP_X_FORWARDED_FOR'))
{$ip = getenv('HTTP_X_FORWARDED_FOR');}
elseif(getenv('REMOTE_ADDR'))
{$ip = getenv('REMOTE_ADDR');}
//Соединяемся с БД
$host = "localhost";
$user = "";
$pass = "";
$db = "";
$connect = mysql_connect("$host", "$user", "$pass");
mysql_select_db("$db", $connect);
if (isset( $_POST['del_ip'] )) $del_ip = $_POST['del_ip']; else $del_ip = false;
if (isset( $_POST['ips'] )) $ips = $_POST['ips'] ; else $ips = false;
if($del_ip != false){
$query = "DELETE FROM `ipban` WHERE `ip` = '$del_ip'";
//echo $query;
$result = mysql_query($query);
}
//Выводим форму
if($ips == false)
{echo"
<form action='ban.php' method='post'>
<input type='name' name='ips'>
<input type='submit' value='Забанить'>
</form>";
$query = "SELECT * from ipban";
$result = mysql_query($query);
echo "<form action ='ban.php' method='post'> <table>";
while ($row = mysql_fetch_assoc($result)) {
echo "<tr><td>".$row['ip']."</td><td><input type=hidden name='del_ip' value='".$row['ip']."'><input type=submit value='Разбанить'></td></tr>"; }
echo "</table></form>";
}
else{
$ips = htmlspecialchars($ips);
//Делаем запрос на добавлние IP в блэк
$query = "INSERT INTO `ipban` (ip) VALUES('$ips')";
$result = mysql_query($query);
if(!$result) {echo"Ошибка!";}
else{echo"IP $ips забанен!";}
}
echo ("<div style=\"text-align: center; margin-top: 10px;\"><a href=\"ban.php\">Вернуться назад</a></div>");
?>
|
Это рабочий вариант,всем спасибо за помощь. | |
|
|
|