|
|
18.05.2010, 13:38
|
|
jobrun
Зарегистрирован: 2010-05-18
Сообщений: 4
|
редактирование объекта не авторизованным пользователем по паролю возможно так сделать?
т.е имеется шаблон
в нем ряд разнообразных полей ввода в том числе и поле password
не авторизованный пользователь заводит эти поля и указывает пароль для последующего его редактирования.
в Отображении объекта пишем
<form action='$editLink'>
пароль: <input type='text' name='s' value='' size='5'><input type='submit' value='Ok'>
</form>
а в 'альтернативной форме изменения' пишем так
if ($_GET['s']=="$f_password") { echo "форма изменения";}
else { echo " неправельный пароль";}
но редактирование всех объектов имеет право только админ!!!!
можно ли как нибудь реализовать редактирование объекта не авторизованным пользователем по паролю?
|
|
|
18.05.2010, 14:10
|
|
malich
Андрей Малков
Зарегистрирован: 2005-08-09
Сообщений: 522
|
А почему нет, вы сами все написали, прикрепляем компонент к разделу, в настройках раздела ставим доступ на добавление и изменение для всех
К стандартному условию добавления объекта дописываем
Код:$f_password = md5($f_password);
чтобы не таскать пароли в открытом виде
в нужном месте делаем ссылку на редактированиеКод:
<form action='$editLink'>
пароль: <input type='password' name='password' value='' size='5'>
<input type='submit' value='Редактировать'>
</form>
Затем создаем альтернативную форму изменения
Код:".($admin_mode?"форма редактирования в режиме администратора": NULL)."
".(!$admin_mode && $f_password==md5($password)?"
форма редактирования для пользователей
чтобы не потерять пароль нужно будет добавить скрытое поле
<input type='hiden' name='password' value='".md5($password)."'>
":"
здесь сообщение если пароль не правильный
")."
В стандартное условие изменения объекта дописываем
Код:if (!$admin_mode){
if ($f_password != $password){
$posting=0;
$warnText="Неверный пороль";
}
if (!$password){
$posting=0;
$warnText="Укажите пароль";
}
}
Мог где то нахимичить, но логика такая.
|
|
|
18.05.2010, 14:39
|
|
jobrun
Зарегистрирован: 2010-05-18
Сообщений: 4
|
дело в том что у меня в Доступе на раздел поставлено
все пользователи имеют право на:
просмотр
добавление
изменение
подписка
но все равно не работает
|
|
|
18.05.2010, 15:07
|
|
malich
Андрей Малков
Зарегистрирован: 2005-08-09
Сообщений: 522
|
по умолчанию редактировать запись может только ее создатель.
|
|
|
18.05.2010, 16:55
|
|
jobrun
Зарегистрирован: 2010-05-18
Сообщений: 4
|
Создатель получается Гость с User_ID = 0
т.е. все добавившие объект это гости с User_ID = 0 тогда и редактируют тоже гости с User_ID = 0!!!
т.е получается если Гость что то создал то и Гость может отредактировать
|
|
|
19.05.2010, 07:26
|
|
malich
Андрей Малков
Зарегистрирован: 2005-08-09
Сообщений: 522
|
что значит не работает? что пишет при попытке редактировать?
|
|
|
19.05.2010, 09:37
|
|
jobrun
Зарегистрирован: 2010-05-18
Сообщений: 4
|
выдает ввести логин и пароль
|
|
|
19.05.2010, 11:15
|
|
malich
Андрей Малков
Зарегистрирован: 2005-08-09
Сообщений: 522
|
Да действительно, гостю не дает редактировать.
Нужно подумать как это можно обойти. как вариант вы можете сделать следующим образом.
создайте новый компонент, прикрепите его к разделу с действием по умолчанию добавление.
Затем из нужного места делайте ссылку на этот раздел. в ссылке по мимо всего прочего нужно передать id записи:
или
Код:<form action='razdel'>
<input tupe='hiden' name='id' value='$f_RowID'>
....
</form>
В компоненте создаем альтернативную форму добавления с нужными полями данные в эти поля подтягиваем sql запросом например
Код:<textarea name='f_text' rows='5' cols='60'>".listQuery("SELECT text FROM MessageXX WHERE Checked=1 AND Message_ID='$id'", "$data[text]")."</textarea>
В действии после добавления объекта пишем примерно следующие
Код:$db->query("UPDATE `MessageXX` SET `text` = '$f_text' WHERE `Message_ID` = $id");
После добавления записи и обновления нужного сообщения вы также sql запросом можете удалять эту запись или строить на их основе историю изменения исходных записей.
|