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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Гостевая книга, Это финиш, прошу помощи. 
:(
    Опции темы
IZ@TOP
Дата 17.2.2005, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



PARROT, думаю что в твоем случае больше подойдет вариант предлодженный Axxent.
Заносим в базу цитаты таким образом:
Код
<div class="quote">текст цитаты</div><!-- endquote -->

Класс quote определяем в таблице стилей:
Код
div.quote {
   border-width:1px;
   border-style:solid;
   border-color:#CCCCCC;
   padding:10px;
}


При редактировании, меняем тег div.quote на ББ_Код:
Код
// ... в $editMessage находится текст сообщения который нуждается в замене цитат.
// мы еще можем сделать небольшую примочку для экономии процессорного времени.
// то есть, проверять на наличие цитат
if(strpos($editMessage, '<div class="quote">')) {
   $editMessage = str_replace(
       array('<div class="quote">', '</div><!-- endquote -->'),
       array('[quote]', '[/quote]'),
       $editMessage
   );
}
// ...



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 17.2.2005, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Спасибо, IZ@TOP!
Ты!!!
Настоящий, стоящий учитель, цены тебе нет!
Только я попробую это позже.
Купила новый комп, устанавливаю систему и копирую свои файлы.

smile

Неудалось изменить второй раз репутацию IZ@TOP, так вот добавляю тут:
Знаешь и ждешь, что он придет, исправит, подскажет, это того стоит.

Это сообщение отредактировал(а) PARROT - 17.2.2005, 22:12


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 18.2.2005, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



smile
PARROT, думаю учительские способности тут ни при чем. Если у человека есть желание учиться и желание дойти до цели, то он рано или поздно придет. А я всего лишь помог немного быстрее добраться до желаемого smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 25.2.2005, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Сложная оказалась задача с цитированием, кое-как справилась.
Немного по другому, нужно проверить, вечером выложу в инет.
И с редактированием тоже возникли, почти такие же проблемы.
Ну вообщем намучилась.
Остается написать регистрацию... smile

Ну вот, выложила свою новую версию форума, которая требует проверки.
Теперь все цитирует и редактирует, вроде как надо.
Но сколько там еще мелких недоделок, это ужас.
Сначала добью недоделки (чтобы уже не возвращаться), потом начну дописывать регистрацию.

Какие будут советы?

Потом, у меня тут еще одна мысль возникла, а если юзер не зарегистрирован, он все равно может создавать сообщения, но около его собщений, всегда добавляется, что он гость, а редактировать свои сообщения он может?
Или только добавлять новые?
А цитировать?
А редактировать?

Опять кучка вопросов...
smile

Это сообщение отредактировал(а) PARROT - 26.2.2005, 00:36


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 5.3.2005, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Ну что, с редактированием я несколько решила вопрос. Временно правда.
Теперь редактировать юзеры могут только свои сообщения.
Пора начинать писать регистрацию, сегодня прикидывала как, в мозгах...
smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 6.3.2005, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PARROT
выложи мысли, мы подскажем что, и как сделать лучше smile
PM MAIL Skype   Вверх
PARROT
Дата 6.3.2005, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Начну писать, что будет не понятно спрошу.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 6.3.2005, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Начала писать, почти сразу возникли проблемы.
Регистрация проходит нормально, но на страницу не войти, пишет неправильный пароль или логин и все тут. smile
Вот код регистрации:
Код

<?
if(isset($send) and $send=="зарегистрироваться")
{
$name=$_POST['name'];
$meil=$_POST['meil'];
$log=$_POST['log'];
$par=$_POST['par'];
$db=mysql_pconnect("localhost","grolvasp_disc","1538733");
       mysql_select_db("grolvasp_disc");
mysql_query ("INSERT INTO reg VALUES ('', '$name', '$meil', '$log', '". md5($par). "')");
header('location: open.php');
ob_end_flush();
exit;
}
?>
<form action="reg.php"  Method="POST">
<table width=400>
<tr>
<td>имя</td>
<td><input type=text name=name></td>
</tr>
<tr>
<td>e-mail:</td>
<td><input type=text name=meil></td>
</tr>
<tr>
<td>логин</td>
<td><input type=text name=log></td>
</tr>
<tr>
<td>пароль</td>
<td><input type=password name=par></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit name=send value="Зарегистрироваться"></td>
</tr>
</table>
</form>


Вот код для входа:
Код

<?
if(isset($send) and $send=="войти")
{
$log=$_POST['log'];
$par=$_POST['par'];
$db=mysql_pconnect("localhost","grolvasp_disc","1538733");
       mysql_select_db("grolvasp_disc");
$login_result = mysql_query("SELECT id_r FROM reg WHERE login='$log' AND parol='". md5($par). "'");
if (!mysql_error() && @mysql_num_rows($login_result)==1)
{
 setcookie($COOKIE_LOGIN_NAME, $log, time()+3600, $COOKIE_PATH);
 setcookie($COOKIE_PASSW_NAME, $par, time()+3600, $COOKIE_PATH);
 header("Location: index.php");
 exit;
 }
elseif (!mysql_error()) {
 print ("Неверный пароль или логин.");
 }
else
 print (mysql_error());

}
?>
<form>
<table width=200>
<tr>
<td>логин</td>
<td><input type=text name=log></td>
</tr>
<tr>
<td>пароль</td>
<td><input type=password name=par></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit name=send value="войти"></td>
</tr>
</table>
</form>


Укажите на ошибки пожалуйста. smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 8.3.2005, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Код

$name=$_POST['name'];
$meil=$_POST['meil'];
$log=$_POST['log'];
$par=$_POST['par'];

делай проверку на безопастность вводимых данных для БД smile
т.е:
$name=mysql_escape_string($_POST['name']);
и т.д.
Код

setcookie($COOKIE_LOGIN_NAME, $log, time()+3600, $COOKIE_PATH);
setcookie($COOKIE_PASSW_NAME, $par, time()+3600, $COOKIE_PATH);

setcookie("login", $log, time()+3600);
setcookie("password", md5($par), time()+3600);
первое аргумент - имя куки, второй - значение, третий время жизни..
+ я добавил md5 в куку пароля, не надо его хранить открытым smile
Код

if(isset($send) and $send=="войти")

Ну если быть "правильным", то:
Код

if(isset($_POST['send']) and $_POST['send']=="войти")

PM MAIL Skype   Вверх
PARROT
Дата 8.3.2005, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Понятно, а в чем моя ошибка была?
Почему пароль не принимается?
Выдается сообщение Неправильный пароль или логин?
Когда мы выбираем логин=логину пароль=паролю, пароль в каком формате должен быть запрошен если
он хранится в MD5()?
Как много неизведанного, но хочется узнать!


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 8.3.2005, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Небольшие замечания по форме регистрации и оформлении кода
Код
<?
if(isset($_POST['send'])) { // Думаю что в проверке на значение переменной кнопки нет необходимости. Лишний код и при error_reporting(E_ALL) должен выдать ошибку в случае если форма не отправлена.

// Инициализаия переменных, пусть и небольшого количества, приводит к большему потреблению памяти.

$db = mysql_pconnect("localhost", "grolvasp_disc", "1538733");
mysql_select_db("grolvasp_disc");

mysql_query ("INSERT INTO reg VALUES (NULL, '{$_POST['name']}', '{$_POST['meil']}', '{$_POST['log']}', '".md5($_POST['par'])."')");

header('location: open.php');
ob_end_flush(); // В начале файла ведь есть ob_start?
exit;
}
?>

<form action="reg.php"  Method="POST">
<table width=400>
 <tr>
  <td>имя</td>
  <td><input type=text name=name></td>
 </tr>
 <tr>
  <td>e-mail:</td>
  <td><input type=text name=meil></td>
 </tr>
 <tr>
  <td>логин</td>
  <td><input type=text name=log></td>
 </tr>
 <tr>
  <td>пароль</td>
  <td><input type=password name=par></td>
 </tr>
 <tr>
  <td colspan=2 align=center><input type=submit name=send value="Зарегистрироваться"></td>
 </tr>
</table>
</form>

Плюс ко всему, советую обрамлять атрибуты HTML тегов в кавычки.

В общем кое какие недоработки есть, но мне кажется что все должно работать.
Код
<?
if(isset($_POST['send'])) {

$db = mysql_pconnect("localhost","grolvasp_disc","1538733");
mysql_select_db("grolvasp_disc");

$login_result = mysql_query("SELECT id_r FROM reg WHERE login = '".
 mysql_escape_string($_POST['log'])".' AND parol = '".md5($_POST['par'])."'");

if (@mysql_num_rows($login_result) > 1) {

setcookie($COOKIE_LOGIN_NAME, md5($_POST['log'].'main_secret_word'), time() + 3600, $COOKIE_PATH);
setcookie($COOKIE_PASSW_NAME, md5($_POST['par'].'main_secret_word'), time() + 3600, $COOKIE_PATH);
// Интересно правда откуда берется COOCKIE_LOGIN_NAME и COOKIE_PASWD_NAME, как и COOKIE_PATH...?
// md5($_POST['par'].'main_secret_word' необходимо для предотвращения расшифровки имени или пароля методом подбора.
// если разумеется взломщик не узнает это самое main_secret_word.
// Можно так же генерировать это main_secret_word и хранить его в базе, и при проверке подставлять.

header("Location: index.php");
exit;

} elseif (mysql_errno() > 0) {
print (mysql_error());
} else {
print ("Неверный пароль или логин.");
}
?>
<form method="post">
<table width=200>
 <tr>
  <td>логин</td>
  <td><input type=text name=log></td>
 </tr>
 <tr>
  <td>пароль</td>
  <td><input type=password name=par></td>
 </tr>
  <tr>
  <td colspan=2 align=center><input type=submit name=send value="войти"></td>
 </tr>
</table>
</form>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 9.3.2005, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



IZ@TOP, проверь пожалуйста файл аунтификации пользователей, если надо исправь.
Код

<?
$db=mysql_pconnect("localhost", "grolvasp_disc", "1538733");
mysql_select_db("grolvasp_disc");

$out = mysql_query("SELECT id_r FROM reg WHERE login='".mysql_escape_string($_COOKIE['log']."' and par = '".
        mysql_escape_string($_COOKIE['par'])."'"); 
// Вроде я так понял что у тебя и пароль тоже записывается в куки, причем в md5?
// тогда делаем проверку и на пароль. Иначе я допустим могу зарегестрироваться в твоей системе, 
// после чего отредактировав cookie на своем компьютере (изменив там своя имя на имя, допустим PARROT), 
// писать под чужим именем.


if (@mysql_num_rows($out) > 0) {

         // $auth=mysql_fetch_row($out); #??? Немного не понял смысл этой строки. В ней нет необходимости, 
         // так как переменная auth все равно примет значение "OK", и данные переданные ей будут потеряны.
         $auth="OK"; // Может быть лучше воспользоваться будевым значением? т.е. $auth = true;

} else {
         header("Location: reg.php");
         exit;
}
?>

smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 10.3.2005, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Подправил smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 10.3.2005, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Спасибо, IZ@TOP!
Код на вход пользователей исправила, теперь работает:
Код

<?
if(isset($send) and $send=="войти")
{
$log=$_POST['log'];
$par=$_POST['par'];
$db=mysql_pconnect("localhost","grolvasp_disc","1538733");
        mysql_select_db("grolvasp_disc");
$login_result = mysql_query("SELECT id_r,parol FROM reg WHERE login='$log'");
if (!mysql_error() && @mysql_num_rows($login_result)==1) 
{
  $prl=mysql_fetch_row($login_result);
  if ($prl[1]==md5($par)) {
    setcookie('log', $log, time()+3600);
    setcookie('par', $par, time()+3600);
    header("Location: index.php");
    exit;
    }
  else{
  print ("Неправильный пароль или логин.");
  }
  }
elseif (!mysql_error()) {
  print ("Неправильный пароль или логин.");
  }
else
  print (mysql_error());

}
?>

Я только не пойму, зачем два раза печатать вот эту строку Неправильный пароль или логин?

Это сообщение отредактировал(а) PARROT - 10.3.2005, 19:00


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 11.3.2005, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



PARROT, подожди, я не говорил что надо дважды его печатать... и лучше логин с паролем проверять одновременнов SQL запросе. + Проверку делать не при помощи mysql_error, а при помощи mysql_num_rows, вернет 1 - значит авторизовался, 0 - значит нет таких логина или пароля.
А я вот что писал:

Код

<?
if(isset($_POST['send'])) {

$db = mysql_pconnect("localhost","grolvasp_disc","1538733");
mysql_select_db("grolvasp_disc");

$login_result = mysql_query("SELECT id_r FROM reg WHERE login = '".
 mysql_escape_string($_POST['log'])".' AND parol = '".md5($_POST['par'])."'");

if (@mysql_num_rows($login_result) != 0) {

setcookie($COOKIE_LOGIN_NAME, md5($_POST['log'].'main_secret_word'), time() + 3600, $COOKIE_PATH);
setcookie($COOKIE_PASSW_NAME, md5($_POST['par'].'main_secret_word'), time() + 3600, $COOKIE_PATH);
// Интересно правда откуда берется COOCKIE_LOGIN_NAME и COOKIE_PASWD_NAME, как и COOKIE_PATH...?
// md5($_POST['par'].'main_secret_word' необходимо для предотвращения расшифровки имени или пароля методом подбора.
// если разумеется взломщик не узнает это самое main_secret_word.
// Можно так же генерировать это main_secret_word и хранить его в базе, и при проверке подставлять.

header("Location: index.php");
exit;

} elseif (mysql_errno() > 0) {
print (mysql_error());
} else {
print ("Неверный пароль или логин.");
}
?>
<form method="post">
<table width=200>
 <tr>
  <td>логин</td>
  <td><input type=text name=log></td>
 </tr>
 <tr>
  <td>пароль</td>
  <td><input type=password name=par></td>
 </tr>
  <tr>
  <td colspan=2 align=center><input type=submit name=send value="войти"></td>
 </tr>
</table>
</form> 
 



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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