|
Автор |
Сообщение |
_nik1_
Зарегистрирован: 15.03.2013 Сообщения: 7 Откуда: Минск
|
|
|
|
Здравствуйте! Я сделал скрипты как в "PHP 5/6 u MySQL 6" 2 издание гостевой книги из г. 38. И у меня появились 2 ошибки:
1. В синем поле не выводится имя автора коментария.
2. Когда я ввожу данные в textarea и "Добавить" появляется ошибка "Вы забыли указать текст сообщения", но я написал там текст.
Прошу помочь!
P.S. Ссылка на скрипт http://ranid.ru/obs/gb_add.php
P.P.S. Комментарий который там находится я разместил через бд. |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Толку от ссылки на скрипт не. Лучше выложите здесь его код. |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
_nik1_
Зарегистрирован: 15.03.2013 Сообщения: 7 Откуда: Минск
|
|
|
|
den писал(а): |
Толку от ссылки на скрипт не. Лучше выложите здесь его код. |
Файл config.php
Код: |
<?php
$dbhost='mysql.hostinger.ru';
$dbuser='u626399099_nik1';
$dbpasswd='q1w2e3r4';
$dbname='u626399099_nik1';
?> |
Файл gb_add.php
Код: |
<?php
// подключаемся к серверу, выбираем базу данных и устанавливаем кодировку
require_once "config.php";
$admin = "nikolai2000@tut.by";
$site = "http://ranid.ru/";
@mysql_connect($dbhost, $dbuser, $dbpasswd) or
die("Не могу подключиться к БД");
@mysql_select_db($dbname) or die("Не могу выбрать БД");
mysql_query('SET NAMES cp1251;');
$uname = $_POST['uname'];
$t = $_POST['t'];
// избавляемся от вредоносного кода
$uname = strip_tags($uname);
$uname = HtmlSpecialChars($uname);
$t = strip_tags($t);
$t = HtmlSpecialChars($t);
// Имя пользователя можно не указывать, а вот текст сообщения - обязательно
if (strlen($uname)==0) $uname = "Гость";
if (strlen($t)==0) die('Вы забыли указать текст сообщения');
$q = "insert into gb values(0, \"$uname\", \"$t\", 0)";
mysql_query($q) or die('MySQL insert error');
$ID = mysql_insert_id();
// Сообщение пользователю
echo "<p>Ваше сообщение было успешно добавлено в базу данных. После одобрения администратором
вы сможете увидеть его в нашей гостевой книге";
// Сообщение администратору
$msg = "В гостевой книге появилось новое сообщение:
$t
Вы можете одобрить его: " . $site . "gb_service.php?a=approve&id=$ID" . " или удалить: " . $site . "gb_service.php?a=del&id=$ID";
// Отправляем сообщение администратору
mail($admin, "Новое сообщение в гостевой книге", $msg);
?> |
Файл gb_service
Код: |
<?php
// подключаемся к серверу, выбираем базу данных и устанавливаем кодировку
require_once "config.php";
@mysql_connect($dbhost, $dbuser, $dbpasswd) or
die("Не могу подключиться к БД");
@mysql_select_db($dbname) or die("Не могу выбрать БД");
mysql_query('SET NAMES cp1251;');
$action = $_GET['a'];
$ID = $_GET['id'];
if (!is_numeric($ID)) die("Номер записи указан неверно!");
if ($action === "approve") {
$q = "update gb set apr = 1 where id = $ID";
@mysql_query($q) or die ("MySQL error");
echo "Сообщение $ID было одобрено";
}
if ($action === "del") {
$q = "delete from gb where id = $ID";
@mysql_query($q) or die ("MySQL error");
echo "Сообщение $ID было удалено";
}
?> |
Файл gb_show.php
Код: |
<?php
// подключаемся к серверу, выбираем базу данных и устанавливаем кодировку
require_once "config.php";
@mysql_connect($dbhost, $dbuser, $dbpasswd) or
die("Не могу подключиться к БД");
@mysql_select_db($dbname) or die("Не могу выбрать БД");
mysql_query('SET NAMES cp1251;');
// количество объявлений на странице
$N = 5;
echo "<h1>Добро пожаловать в гостевую книгу!</h1>";
// использовать функцию mysql_num_rows() нельзя, потому как
// для того чтобы узнать общее количество записей, нужно выполнить
// запрос select * from ob, то есть получить все записи, а это
// нежелательно, поэтому используем функцию count
$r1=mysql_query("select count(*) as rec from gb where apr=1");
$f = mysql_fetch_row($r1);
$rec = $f[0]; // всего записей в таблице
// если страница не указана, выводим первую
if (!isset($_GET['page'])) $page=0;
else $page = $_GET['page'];
// записи, которые нужно вывести
$records = $page * $N;
// запрос
$q="select * from gb where apr=1 limit ".$records.", $N";
echo "Всего записей $rec<br>";
$r=mysql_query($q); // выполняем запрос
$n = mysql_num_rows($r); // к-во записей
// если страница не первая, выводим ссылку Назад
if ($page > 0) {
$p = $page - 1;
echo "<a href=gb_how.php?page=$p>Назад</a> ";
}
$page++; // увеличиваем страницу
// выводим ссылку на следующие 5 записей (на след. страницу),
// если она есть, то есть количество записей, которые нужно вывести и
// смещение не превышает общее количество записей
if ($records+$N < $rec)
echo "<a href=gb_show.php?page=$page>Далее</a>";
// выводим объявления
for ($i=0; $i<$n; $i++)
{
$f=mysql_fetch_array($r);
// выводим дату (поле dt)
echo "<p><table width=100%>
<tr><td bgcolor=navy width=10%>
<font name=tahoma size=2 color=white>$f[uname]</font></td>";
// выводим текст объявления (поле t)
echo "<td colspan=2 bgcolor=grey>
<font name=tahoma size=2 color=white>$f[t]</td>
</tr></table>";
}
// форма добавления сообщения
echo '<p>Новое сообщение:
<p><form action=gb_add.php method=post>
Ваше имя: <input tyle=text name=uname>
<p><textarea cols=50 rows=10 name=t></textarea>
<p><input type=submit value=Добавить>';
?> |
|
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
_nik1_, проверьте вашу базу данных только что добавил туда 2 тестовых сообщения:
Ваше сообщение было успешно добавлено в базу данных. После одобрения администратором вы сможете увидеть его в нашей гостевой книге
Посмотрите, есть ли они в таблице? |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
_nik1_
Зарегистрирован: 15.03.2013 Сообщения: 7 Откуда: Минск
|
|
|
|
den писал(а): |
_nik1_, проверьте вашу базу данных только что добавил туда 2 тестовых сообщения:
Ваше сообщение было успешно добавлено в базу данных. После одобрения администратором вы сможете увидеть его в нашей гостевой книге
Посмотрите, есть ли они в таблице? |
Сообщение добавил, но имя пользователя так и не отображается. А мои сообщения не добавлялись так как содержали русские буквы, которые скрипт не хочет добавлять в бд. |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
У вас проблема заключается в настройках PHP. Создайте .htaccess в корневом каталоге документов веб-сервера со след содержимым
php_value mbstring.language "Russian"
php_value mbstring.http_input "auto"
php_value mbstring.http_output "cp1251"
php_value mbstring.encoding_translation "On" |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
_nik1_
Зарегистрирован: 15.03.2013 Сообщения: 7 Откуда: Минск
|
|
|
|
Сделал, но не помогает. |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
_nik1_, это 100% неправильные настройки сервера. Можно обратиться к хостеру, он должен пофиксить, этого его баг (((
Попробуйте также этот файл .htaccess поместить в каталог obs. |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Пока попробуйте в форме изменить POST на GET, соответственно в коде _POST на _GET, но большие отзывы никто не сможет опубликовать. |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
_nik1_
Зарегистрирован: 15.03.2013 Сообщения: 7 Откуда: Минск
|
|
|
|
У меня стоит ещё на этом сайте joomla и в ней нормально обрабатывается русские буквы. Может с бд проблемы? |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
До БД информация как раз и не доходит. Она теряется при передаче методом POST. Попробуйте грохнуть .htaccess вообще (предварительно его сохранив). Может Джумла там что-то накосячила.
Какой софт на сервере? Версия апача, пхп, мускула |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
_nik1_
Зарегистрирован: 15.03.2013 Сообщения: 7 Откуда: Минск
|
|
|
|
den писал(а): |
До БД информация как раз и не доходит. Она теряется при передаче методом POST. Попробуйте грохнуть .htaccess вообще (предварительно его сохранив). Может Джумла там что-то накосячила.
Какой софт на сервере? Версия апача, пхп, мускула |
Домен: ranid.ru
IP Адрес: 31.170.165.62
Имя пользователя: u626399099
Пароль: ••••••••••
Место на диске: 0.02 / Unlimited MB
Трафик: 0.00 / Unlimited MB
Корневая папка: /home/u626399099
Имя Сервера: server20.hostinger.ru
IP Сервера: 31.170.164.29
Загруженность Сервера: 3.26
Загруженность MySQL Сервера: 0.1
Apache Версия: Apache/2.2.14
PHP Версия: 5.4
MySQL Версия: 5.1.61
Активирован: 2013-02-12 16:18:02
Истечение Срока: 2013-04-08
Периодичность выставления счетов: раз в месяц
Статус:
Активный
Хостинговый План: Премиум
Набор Услуг: Премиум
Информация Клиента
Имя: Николай Ратько
Почта: nikolai2000@tut.by
Регистрация: 2012-06-16
Статус:
Активный
Последний Визит: 48 минут назад
Последний визит с: 212.98.182.237
Страна: Белоруссия |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Самый новый софт. Напишите в саппорт, думаю, помогут. Это вопрос в настройках апача/пхп. Подобные баги видел на Апаче 1.3, но тут последняя версия (даже ПХП 5.4 поставили). |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
_nik1_
Зарегистрирован: 15.03.2013 Сообщения: 7 Откуда: Минск
|
|
|
|
Можете подсказать мне хороший хостинг с поддержкой php и mysql(желательно с внешним доступом)? Например на котором стоит ваш сайт. |
|
Вернуться к началу |
|
|
|
|