Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Мини админка, для редактирования сообщений гостевой 
:(
    Опции темы
zluka
Дата 2.10.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 27.7.2006

Репутация: нет
Всего: 2



Вот скрипт гостевой:
book.php
Код

$dblocation = "127.0.0.1";
$dbname = "php";
$dbuser = "root";
$dbpasswd = "";
$dbcnt = mysql_connect($dblocation, $dbuser, $dbpasswd);
$dbphp = mysql_select_db($dbname);

function viewMessages()
{
    $query_view = mysql_query("SELECT * FROM book");
    $rows = mysql_num_rows($query_view);

    echo "<table border=1 width='400'>";
    for($i=0; $i<$rows; $i++)
    {
        $f = mysql_fetch_array($query_view);
        echo "<tr>";
        echo "<td colspan='1'>";
         echo "<b>".$f['Name']."</b>";
        echo "</td>";
        echo "<td>";
         echo "<a href='admin.php?id={$f['id']}'>Edit</a>";
        echo "</td>";
        echo "</tr>";

        echo "<tr>";
        echo "<td>";
         echo $f['Datetime'];
        echo "</td>";
        echo "</tr>";

        echo "<tr>";
        echo "<td>";
         echo $f['Text'];
        echo "</td>";
        echo "</tr>";

        echo "<tr>";
        echo "<td bgcolor=gray></td>";
        echo "</tr>";
    }
    echo "</table>";
}

viewMessages();


 if(!empty($_GET))
 {
    $user_name = $_GET['user_name'];
    $email = $_GET['email'];
    $website = $_GET['website'];
    $text = $_GET['text'];
    $datetime = date('Y-m-d H:i:s');

    $query_insert = mysql_query("INSERT INTO `book` (id, Name, Email, Website, Text, Datetime) VALUES (NULL, '$user_name', '$email', '$website', '$text', '$datetime')");
    Header("Location: book.php");

 }

echo "<form action='book.php' method='GET'>";
echo "<table border = 0>";
echo "<tr>";
echo "<td><input type='text' name='user_name' value=''> Name: *</td>";
echo "</tr>";
echo "<tr>";
echo "<td><input type='text' name='email' value=''> Email: *</td>";
echo "</tr>";
echo "<tr>";
echo "<td><input type='text' name='website' value=''> Website:</td>";
echo "</tr>";
echo "<tr>";
echo "<td><textarea name='text' cols='50' rows='10' wrap='on'></textarea></td>";
echo "</tr>";
echo "<tr>";
echo "<td><input type='submit' name='knopka' value='Submit message'></td>";
echo "</tr>";
echo "</table>";
echo "</form>";

Из гостевой при нажатии на ссылку Edit, переходим в админку admin.php и передаем номер id, соответствующий сообщению.
Админка:
admin.php
Код

$id = $_GET['id']; #номер сообщения

$dblocation = "127.0.0.1";
$dbname = "php";
$dbuser = "root";
$dbpasswd = "";
$dbcnt = mysql_connect($dblocation, $dbuser, $dbpasswd);
$dbphp = mysql_select_db($dbname);

$query_edit = mysql_query("SELECT * FROM `book` WHERE id={$id}");
$f = mysql_fetch_array($query_edit);

echo "<form action='admin.php' method='GET'>";
echo "<table border = 0>";
echo "<tr>";
echo "<td><textarea name='text' cols='50' rows='10' wrap='on'>{$f['Text']}</textarea></td>";
echo "</tr>";
echo "<tr>";
echo "<td><input type='submit' name='knopka' value='Edit message'></td>";
echo "</tr>";
echo "</table>";
echo "</form>";

if(isset($_GET['text']))
{
    $query_rewrite = mysql_query("UPDATE `book` SET Text = {$_GET['text']} WHERE id={$id}");

    if (!$query_rewrite)
    {
        mysql_error($dbcnt);
    }

    #Header("Location: book.php");
}

В <textarea> (admin.php) нормально передаеться редактируемое сообщение, но при нажатии на кнопку Edit message выскакивают ошибки и сообщение НЕ редактируется:(
Код

Notice: Undefined index: id in F:\Program Files\Apache Software Foundation\Apache2.2\htdocs\guestbook\admin.php on line 11

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in F:\Program Files\Apache Software Foundation\Apache2.2\htdocs\guestbook\admin.php on line 21

Хелп smile 
З.Ы. Кстати, я давно не был форуме, почему у меня в Опере не подсвечиваеться PHP код? В IE все ок.


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 2.10.2008, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



>> Notice: Undefined index: id in F:\Program Files\Apache Software Foundation\Apache2.2\htdocs\guestbook\admin.php on line 11 <<
прочитайте тысячу раз, пока не дойдёт
PM MAIL   Вверх
zluka
Дата 2.10.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 27.7.2006

Репутация: нет
Всего: 2



Цитата(gta4kv @  2.10.2008,  16:36 Найти цитируемый пост)
прочитайте тысячу раз, пока не дойдёт

Дело в том, что я понимаю, что нет параметра id, откуда ему взяться?
Поэтому я добавил в форму еще такое поле:
Код

<input name='id' type='hidden' value={$id}>

Вроде заработало smile 



--------------------
user posted image
PM MAIL   Вверх
ksnk
Дата 2.10.2008, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Угу. Пришел хитый юзер и в сообщение ввел '<script> document.location="xxx.com"</script>'
И все посетители сайта дружными рядами идут смотреть порнуху...

Это сообщение отредактировал(а) ksnk - 2.10.2008, 17:28


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
zluka
Дата 3.10.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 27.7.2006

Репутация: нет
Всего: 2



Цитата(ksnk @  2.10.2008,  17:27 Найти цитируемый пост)
Угу. Пришел хитый юзер и в сообщение ввел '<script> document.location="xxx.com"</script>'И все посетители сайта дружными рядами идут смотреть порнуху...

Добавил ф-ю htmlspecialchars:
Код

$user_name = htmlspecialchars($_GET['user_name']);
$email = htmlspecialchars($_GET['email']);
$website = htmlspecialchars($_GET['website']);
$text = htmlspecialchars($_GET['text']);
$datetime = date('Y-m-d H:i:s');


Кстати, а что можно еще предпринять для защиты гостевой?


--------------------
user posted image
PM MAIL   Вверх
MoLeX
Дата 3.10.2008, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(zluka @  3.10.2008,  14:02 Найти цитируемый пост)

Кстати, а что можно еще предпринять для защиты гостевой? 


zluka, поищи по форуму почти каждую неделю поднимается вопрос об безопасности, многое найти можно  smile 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.