SVAROG PHP: curl_setopt($ch,CURLOPT_NOBODY,1); curl_setopt($ch,CURLOPT_HEADER,1); -m0rgan- При отладке хорошо бы проверять где именно ошибка, например: PHP: $link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die('Не возможно соединиться с базой ('.mysql_error().')'); mysql_select_db(DB_NAME) or die('Нельзя выбрать базу ('.mysql_error().')'); $result = mysql_query($query) or die ('Ошибка запроса: '.mysql_error()); Тогда вопросы будут отпадать сами собой
У меня конфиг был такой: PHP: <? Error_Reporting(E_ALL & ~E_NOTICE); Error_Reporting (ERROR|WARNING); @mysql_connect("host", "login", "pass") or die("нет коннекта с мускулом..."); @mysql_select_db("database") or die("Нет коннекта с БД..."); mysql_query('set character_set_results=cp1251') or die(mysql_error()); $date=date("d.m.Y"); $ip=$_SERVER['REMOTE_ADDR']; ?>
Доброго Вам время суток! Где можно найти документацию, желательно на руском, по работе с Сокетами?? Зарание спасибо
Romantic1989 http://ru2.php.net/manual/ru/function.fsockopen.php не совсем на русском, но примеров хороших много
PHP: <?php header("Location: http://google.com"); die(); ?> или PHP: <script>document.location.href = "http://google.com";</script>
имеется PHP: <form action="dropnews.php" method="POST" > <?php $result=mysql_query("SELECT title,id FROM news"); while ($myrow=mysql_fetch_array($result)) { echo "<table width='200' border='0' align='center'> <tr><td width='12'><input name='id' type='checkbox' value='$myrow[id]'></td><td>$myrow[title]</td></tr></table>"; } ?> <input type="submit" name="submit" value="Удалить"> </form> dropnews.php PHP: <?php if(isset($_POST['id'])) {$id=$_POST['id'];} if(isset($id)) { $result=mysql_query("DELETE FROM news WHERE id='$id'"); if($result == 'true') {echo "<p>Новость удалена :-)</p><br><a href=\"delnews.php\">Назад</a>";} else {echo "<p>Новость не удалена :-(</p><br><a href=\"delnews.php\">Назад</a>";} } else {echo "<p>Ошибка!</p><br><a href=\"delnews.php\">Назад</a>"; } ?> как можно осуществить удаление сразу нескольких новостей (чтобы их можно было выбрать checkbox'ом) заранее благодарен
#Wolf# Почитайте на досуге статьи про анти-SQLinj PHP: <pre><form METHOD="POST"> <INPUT TYPE=checkbox NAME="Comp[]" VALUE="1"> Процессоры <INPUT TYPE=checkbox NAME="Comp[]" VALUE="2" CHECKED> Видеоадаптеры <INPUT TYPE=checkbox NAME="Comp[]" VALUE="3"> Сканеры <INPUT TYPE=checkbox NAME="Comp[]" VALUE="4" CHECKED> Модемы <INPUT TYPE=submit VALUE="Отправить" name="asd"> </form> <? if (isset($_POST['asd'])) { $id=$_POST['Comp']; if (is_array($id)) {array_walk($id,'intval'); $id=implode("' or id='",$id);} else $id=intval($id); // не забываем об анти SQL echo "DELETE FROM news WHERE id='".$id."'"; if (mysql_query("DELETE FROM news WHERE id='".$id."'")) { echo "<p>Новость удалена :-)</p><br><a href=\"delnews.php\">Назад</a>"; } else { echo "<p>Новость не удалена :-(</p><br><a href=\"delnews.php\">Назад</a>"; } } ?> if ($result=='true') - эт конеш сильно
не менее сильно) я б лучше вот так сделал: PHP: <form action="" method="post"> <input type="checkbox" name="ids[]" value="1" /> <input type="checkbox" name="ids[]" value="2" /> <input type="checkbox" name="ids[]" value="3" /> <input type="checkbox" name="ids[]" value="4" /> <input type="submit" value="Удалить выбранные" /> </form> <?php $ids = isset($_POST['ids']) && is_array($_POST['ids']) ? array_map('intval', $_POST['ids']) : ''; if($ids){ $sql = mysql_query('DELETE FROM `table` WHERE `id` = IN ('.join(',', $ids).') '); echo $sql ? 'Успешно =)' : 'Неудачно =('; } ?>
Доброе время суток! Подскажите , что означает эта ошибка: Ошибка запроса: Query was empty кусок кода: PHP: if($_GET['news']==add) { $query = "SELECT * FROM news"; $empty = mysql_query($query); $n = mysql_num_rows($empty); $num=$n+1; echo'<form method="POST" action="index.php?add=news"> <table width="100%" border="0" cellpadding="3" style="border: 1px solid #324316"><tr><td bgcolor="#324316"> Название: <input type="text" name="name" size="40" value="'.$name.'"></td></tr><tr><td>Первый текст: (выводится на главной странице)<br><br> <textarea rows="5" name="text" cols="70">'.$text.'</textarea><br><br> Второй текст: (выводится на странице подробнее о новости)<br><br> <textarea rows="10" name="text2" cols="70">'.$text2.'</textarea></td></tr> <tr><td bgcolor="#324316"><center> <input type=submit value="OK"></center></td></tr></table></form>'; } if($_GET['add']==news) { $form = "INSERT INTO news VALUES ('$num', '$name', '$text', '$text2', '$ip')"; mysql_query($form); if($form){ echo"<font color=red>Новость успешно добавлена!</font><meta http-equiv='refresh' content='2;URL=index.php?page=news'>"; } } Зарание спасибо!
По русски: Запрос был пуст) у тебя register_globals = ON ? Или где получение данных из массива POST? а защита от sql инфекций?) PHP: if($_GET['news']==add) add ж у тебя не константа (как и news), кавычки какбэ надо PHP: $form = "...."; mysql_query($form); if($form){ Какбэ проверять надо результат запроса, а не строку запроса. PHP: $form = "...."; $a = mysql_query($form); if($a){ я хз под чем ты писал такой скрипт, но явно новый год прошёл нормально))
Значит в таблицу news нет записей. Должна быть хоть одна запись, чтобы запрос был успешным. Дальше PHP: $form = "INSERT INTO news VALUES ('$num', '$name', '$text', '$text2', '$ip')"; Так неправильно, правильно так: PHP: $form = "INSERT INTO news (`num`, `name`, `text`,`text2`,`ip` ) VALUES ('$num', '$name', '$text', '$text2', '$ip')"; т.е. надо указать поля, куда вставляешь данные, а не так вот просто. А если у тебя поле num просто id для какого-то текста, который просто увеличивается на единицу, так проще и сделать сразу такое поле с автоинкриментом, оно само будет автоматически увеличиваться при появлении новой записи, т.е. сначала сделай такую таблицу (один раз): PHP: $query = "CREATE TABLE news ( num int(10) NOT NULL auto_increment, name varchar(200) default NULL, text varchar(200) default NULL, text2 varchar(200) default NULL, ip varchar(200) default NULL, PRIMARY KEY (num) );"; $end=@mysql_query($query); И всё, забудь про num, обрабатывай только данные
Поясню ситуацию: Начал я писать движок... Сначала все норм, потом перестали добавлятся новости((( Потом мне посоветовали поставить другой конфиг, вот код: PHP: <? $link = mysql_connect(localhost, test, test) or die('Не возможно соединиться с базой ('.mysql_error().')'); mysql_select_db(test) or die('Нельзя выбрать базу ('.mysql_error().')'); $result = mysql_query($query) or die ('Ошибка запроса: '.mysql_error()); ?> Когда я прохожу по адресу localhost/admin появляется ошибка: полный код: PHP: <? $name=$_POST['name']; $text=$_POST['text']; $text2=$_POST['text2']; if($_GET['page']==news) { print"<center><a href=?news=add>Добавить новость</a></center><br><br>"; $query = "SELECT * FROM news order by id desc LIMIT 0,100000"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) : print'<table width="100%" border="0" cellpadding="3" style="border: 1px solid #324316"><tr><td bgcolor="#324316">'.$row['name'].'</td></tr><tr><td>'.$row['text'].'<br>'.$row['text2'].'</td></tr> <tr><td bgcolor="#324316"><a href="?news=delete&id='.$row['id'].'">Удалить</a> <a href="?edit=news&id='.$row['id'].'">Редактировать</a></td></tr> </table><br>'; endwhile; } if($_GET['edit']==news) { $index=$_GET['id']; $query = "SELECT * FROM news WHERE `id` = '".$index."'"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) : print' <form method="POST" action="index.php?news=edit&id='.$row['id'].'"> <table width="100%" border="0" cellpadding="3" style="border: 1px solid #324316"><tr><td bgcolor="#324316"> Название новости: <input type="text" name="name" size="40" value="'.$row['name'].'"></td></tr><tr><td>Первый текст: (выводится на главной странице)<br><br> <textarea rows="5" name="text" cols="70">'.$row['text'].'</textarea><br><br> Второй текст: (выводится на странице подробнее о новости)<br><br> <textarea rows="10" name="text2" cols="70">'.$row['text2'].'</textarea></td></tr> <tr><td bgcolor="#324316"><center> <input type=submit value="OK"></center></td></tr></table></form>'; endwhile; } if($_GET['news']==edit) { $index=$_GET['id']; $edit = "UPDATE `news` SET `name` = '$name', `text` = '$text', `text2` = '$text2' WHERE `id` = ".$index; mysql_query($edit); if($edit){ echo"<font color=red>Новость успешно изменена!</font><meta http-equiv='refresh' content='2;URL=index.php?page=news'>"; } } if($_GET['news']==delete) { $da=$_GET['id']; $del = "DELETE FROM `news` WHERE `id` = '".$da."'"; mysql_query($del); if($del){ echo"<font color=red>Новость успешно удалена!</font><meta http-equiv='refresh' content='2;URL=index.php?page=news'>"; } } if($_GET['news']==add) { $query = "SELECT * FROM news"; $result = mysql_query($query); $n = mysql_num_rows($result); $num=$n+1; echo'<form method="POST" action="index.php?add=news"> <table width="100%" border="0" cellpadding="3" style="border: 1px solid #324316"><tr><td bgcolor="#324316"> Название: <input type="text" name="name" size="40" value="'.$name.'"></td></tr><tr><td>Первый текст: (выводится на главной странице)<br><br> <textarea rows="5" name="text" cols="70">'.$text.'</textarea><br><br> Второй текст: (выводится на странице подробнее о новости)<br><br> <textarea rows="10" name="text2" cols="70">'.$text2.'</textarea></td></tr> <tr><td bgcolor="#324316"><center> <input type=submit value="OK"></center></td></tr></table></form>'; } if($_GET['add']==news) { $form = "INSERT INTO news VALUES ('$num', '$name', '$text', '$text2', '$ip');"; mysql_query($form); if($form){ echo"<font color=red>Новость успешно добавлена!</font><meta http-equiv='refresh' content='2;URL=index.php?page=news'>"; } } ?> Создаю таблицу невс с колонками: PHP: CREATE TABLE `news` ( `id` int(20) unsigned NOT NULL auto_increment, `name` varchar(20) NOT NULL default '', `text` varchar(20) NOT NULL default '', `text2` varchar(20) NOT NULL default '', PRIMARY KEY (`id`), KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; Вроде все... Хочется услышать все замечания и предложения по решению проблемы, ну и заодно по безопасности... Зарание спасибо!
Проблема скорее всего здесь: $index=$_GET['id']; и, соотвественно, дальше здесь: $query = "SELECT * FROM news WHERE `id` = '".$index."'"; $result = mysql_query($query); попробуй подставить вместо $index просто реальную цифру той новости, которая реально существует Ну и можно посмотреть значение $index (кладется туда вообще что-нибудь или нет): PHP: $index=$_GET['id']; echo $index;
-m0rgan- Либо ты нас непонятно зачем обманываешь, либо крайне сильно заблуждаешься... Во-первых, это НЕ весь листинг, ты либо этот файл где-то инклудишь, либо случайно удалил инклуд конфига из начала поста PHP: <? $link = mysql_connect(localhost, test, test) or die('Не возможно соединиться с базой ('.mysql_error().')'); mysql_select_db(test) or die('Нельзя выбрать базу ('.mysql_error().')'); >>>>>>>>>>>$result = mysql_query($query) or die ('Ошибка запроса: '.mysql_error()); <<<<<<<<<<<<<<<<<< ?> Смотрим на выделенную строчку. Тебе что сказали? Для всех mysql_query сделать такую конструкцию, а не бездумно копировать ее зачем-то в конфиг оО. Естественно, что $query - пустая строка в конфиге, собственно отсюда и ошибка. Во-вторых if($_GET['edit']==news) - тебе парой постов выше сказали, что ты сравниваешь НЕ со строкой, а с константой, то есть эта проверка эквивалентна if($_GET['edit']==0) В третьих: PHP: $form = "INSERT INTO news VALUES ('$num', '$name', '$text', '$text2', '$ip');"; mysql_query($form); if($form) $form - это заданная строка и ты проверяешь задал ли ты ее, а не выполнил ли ты запрос с ней. И так же в других местах кода В-четвертых, Читать прикрепленную в этом разделе тему про анти-SQLinj
Имя неопределенной константы преобразуется к строковому типу PHP: <? echo news; ?> А так все остальное ты верно сказал.
Во) Вснм спасибо! Это мну очень сильно проглючило((( P.S.:Нет, я не обнаную,это весь пхп код, а конфиг я вставлял в начале хтмл кода)