ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #7541  
Старый 06.01.2009, 15:13
Аватар для .:EnoT:.
.:EnoT:.
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме:
4832771

Репутация: 1916


По умолчанию

Цитата:
Ошибка запроса: Query was empty
По русски: Запрос был пуст)

у тебя 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){ 
я хз под чем ты писал такой скрипт, но явно новый год прошёл нормально))
 
Ответить с цитированием

  #7542  
Старый 06.01.2009, 15:23
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Значит в таблицу 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, обрабатывай только данные
 
Ответить с цитированием

  #7543  
Старый 06.01.2009, 16:12
Аватар для -m0rgan-
-m0rgan-
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
Провел на форуме:
2584134

Репутация: 519


Отправить сообщение для -m0rgan- с помощью ICQ
По умолчанию

Поясню ситуацию:
Начал я писать движок...
Сначала все норм, потом перестали добавлятся новости(((
Потом мне посоветовали поставить другой конфиг, вот код:
PHP код:
<?
$link 
mysql_connect(localhosttesttest) or die('Не возможно соединиться с базой ('.mysql_error().')'); 
mysql_select_db(test) or die('Нельзя выбрать базу ('.mysql_error().')'); 
$result mysql_query($query) or die ('Ошибка запроса: '.mysql_error()); 
?>
Когда я прохожу по адресу localhost/admin
появляется ошибка:
Цитата:
Ошибка запроса: Query was empty
полный код:
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` (
`
idint(20unsigned NOT NULL auto_increment,
`
namevarchar(20NOT NULL default '',
`
textvarchar(20NOT NULL default '',
`
text2varchar(20NOT NULL default '',
PRIMARY KEY (`id`),
KEY `id` (`id`)
ENGINE=MyISAM DEFAULT CHARSET=cp1251
Вроде все...
Хочется услышать все замечания и предложения по решению проблемы, ну и заодно по безопасности...
Зарание спасибо!
 
Ответить с цитированием

  #7544  
Старый 06.01.2009, 16:19
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Проблема скорее всего здесь:

$index=$_GET['id'];

и, соотвественно, дальше здесь:

$query = "SELECT * FROM news WHERE `id` = '".$index."'"; $result = mysql_query($query);

попробуй подставить вместо $index просто реальную цифру той новости, которая реально существует

Ну и можно посмотреть значение $index (кладется туда вообще что-нибудь или нет):

PHP код:
$index=$_GET['id'];
echo 
$index
 
Ответить с цитированием

  #7545  
Старый 06.01.2009, 16:48
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

-m0rgan- Либо ты нас непонятно зачем обманываешь, либо крайне сильно заблуждаешься... Во-первых, это НЕ весь листинг, ты либо этот файл где-то инклудишь, либо случайно удалил инклуд конфига из начала поста

PHP код:
<?
$link 
mysql_connect(localhosttesttest) 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

Последний раз редактировалось Gifts; 06.01.2009 в 16:50..
 
Ответить с цитированием

  #7546  
Старый 06.01.2009, 17:03
Аватар для oRb
oRb
Members of Antichat - Level 5
Регистрация: 09.05.2008
Сообщений: 304
Провел на форуме:
7875940

Репутация: 2362
По умолчанию

Цитата:
Сообщение от Gifts  

Во-вторых if($_GET['edit']==news) - тебе парой постов выше сказали, что ты сравниваешь НЕ со строкой, а с константой, то есть эта проверка эквивалентна if($_GET['edit']==0)
Имя неопределенной константы преобразуется к строковому типу
PHP код:
<?
echo news;
?>
А так все остальное ты верно сказал.
 
Ответить с цитированием

  #7547  
Старый 06.01.2009, 17:11
Аватар для -m0rgan-
-m0rgan-
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
Провел на форуме:
2584134

Репутация: 519


Отправить сообщение для -m0rgan- с помощью ICQ
По умолчанию

Во)
Вснм спасибо!
Это мну очень сильно проглючило(((
P.S.:Нет, я не обнаную,это весь пхп код, а конфиг я вставлял в начале хтмл кода)
 
Ответить с цитированием

  #7548  
Старый 06.01.2009, 17:25
Аватар для diznt
diznt
Постоянный
Регистрация: 31.01.2008
Сообщений: 643
Провел на форуме:
6128108

Репутация: 445


По умолчанию

всем гуру раздела здрасти :-)
народ кто как изучал php?
То есть нужен учебничек онлайн (то есть прям на сайте)
то есть где там начинаеться все с самого простого (там переменные всякие и т.д.)(+с примерами чтобы было) и заканчивая там чем нибуть сложнейшим на php (к примеру простой двиг сайта где включаеться все что описывалось в учебнике (где это все эти туториалы))
офф сайты не катят

(html знаю)

Последний раз редактировалось diznt; 06.01.2009 в 17:27..
 
Ответить с цитированием

  #7549  
Старый 06.01.2009, 17:29
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

diznt https://forum.antichat.ru/thread89681.html

От себя - знание любого языка + постепенное изучение операторов PHP
 
Ответить с цитированием

  #7550  
Старый 06.01.2009, 18:24
Аватар для .:EnoT:.
.:EnoT:.
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме:
4832771

Репутация: 1916


По умолчанию

Я бы посоветовал книгу: Максим Кузнецов - PHP на примерах.

Цитата:
Имя неопределенной константы преобразуется к строковому типу
это так, но всё равно ты получишь ошибку о неопределённой константе, хотя текст и выведется.
В любом случае так делать не надо)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Delphi, .NET, Asm 5420 17.06.2010 13:33
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Форумы 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ