|
|
|
| Доброго времени.
У меня возник небольшой вопрос, но в него упёрлась моя дальнейшая работа- у меня есть страничка, на ней пользователь (зарегистрированный) может сделать заказ, то есть заполняет поля и жмёт кнопку "заказать", после чего всё что заносилось в поля- записывается в мою бд.
И вот вопрос- как сделать вот такое: не зарегистрированный пользователь (гость) может смотреть эту страничку, но! При нажатии на кнопку "заказать" будет высвечиваться сообщение "зарегистрируйтесь и тд и тп", или же вообще не показывать ему форму, а на странице просто писать "на этой странице- форма заказа, она вам не доступна".
Уполяю, подскажите, что и как сделать?
Привожу часть кода странички:
<table width="40%">
<tr>
<td width="35%">Вы вошли как:</td>
<td><?php
$log1=$_SESSION['i'];
echo $log1;
?></td>
</tr>
</table>
<form action=zakazat.php method=post>
<input type=hidden name=action value=post>
<fieldset>
<legend>Выберите название системы для вашего заказа</legend><br>
<input type=text name=sis value='<? echo $myrow['sis']; ?>'>
</fieldset>
<fieldset>
Ваши дополнительные предпочтения к заказу:
<input type=text name=dop value='<? echo $myrow['dop']; ?>'>
<p>
Дата подачи заказа в формате гггг-мм-дд:
<input type=text name=date value='<? echo $myrow['date']; ?>'>
<p>Ввведите свою контактную информацию:
<input type=text name=kontact value='<? echo $myrow['kontact']; ?>'>
<input type="submit" value="заказать" />
</fieldset>
</form>
|
| |
|
|
|
|
|
|
|
для: Blondy
(27.05.2010 в 21:38)
| | используйте сессии($_SESSION)
Вот для начала | |
|
|
|
|
|
|
|
для: Slo_Nik
(27.05.2010 в 21:57)
| | Но я уже использую сессии- у меня уже пользователь заходит под паролем и тд. Я не понимаю только как гостю не давать эту страницу или сообщение при попытке рассчёта по моей форме.
простите пожалуйста за мои глупые вопросы... | |
|
|
|
|
|
|
|
для: Blondy
(27.05.2010 в 22:18)
| |
if (пользователь авторизован)
{
показываем страничку или ссылку
}
else
{
не показываем или выводим страничку с предупреждающим сообщением
}
|
| |
|
|
|
|
|
|
|
для: Blondy
(27.05.2010 в 22:18)
| | Вопросы не бывают глупыми.. Бывают лишь ответы глупыми ))
Ты говорил, у тебя уже есть сессия? Имя пользователь и пароль? ЗНачит, у гостя нет этих переменных... Вот, пробуй делать проверку.. Если сессия актив - можно разрешить заказ... Если неактив - пользователь неавторизирован, делаем запрет на регистрацию.. | |
|
|
|
|
|
|
|
для: Tonik992
(27.05.2010 в 23:45)
| | Спасибо огромное за подсказку!)
Я исходя из логики, что при входе- либо пользователь заполняет поле login либо нет делаю примерно вот такую конструкцию:
<?php
$log = mysql_real_escape_string($_POST['login']);
$pas = mysql_real_escape_string($_POST['password']);
$result1 =mysql_query("SELECT * FROM `users` WHERE login = '$log'",$gb);
if $log == ("")
$log = ("Гость")
$_SESSION['i']=$log;
?>
|
Но что-то видимо недопонимаю потому что ничего не работает. А логика вроде простая- если в поле login пустая строка (нет ввода логина) - то это гость, значит будет передаваться по сесси- "гость" и потом я буду уже запрещать именно гостю смотреть страничку... я надеюсь. | |
|
|
|
|
|
|
|
для: Blondy
(28.05.2010 в 11:01)
| | зачем делать запрос к базе, если поле логин не заполнено? | |
|
|
|
|
|
|
|
для: Valick
(28.05.2010 в 11:12)
| | То есть поместить проверку перед выборкой из БД? | |
|
|
|
|
|
|
|
для: Blondy
(28.05.2010 в 11:01)
| |
<?php
session_start();
if (isset($_POST['login']) && isset($_POST['password']) ){
$log=$_POST['login'];
$pas=$_POST['password'];
...........обработка переменных $log $pas...........
$result1 =mysql_query("SELECT * FROM `users` WHERE login = '".$log."' AND password='".$pas."'",$gb);
..........обработка результата запроса.........
}else{
$_SESSION['i']="Гость";
}
?>
|
примерно | |
|
|
|
|
|
|
|
для: Valick
(28.05.2010 в 11:22)
| | Спасибо вам! всё получилось чудесным образом.
Но что-то соображалки у меня не хватает почему не работает последнее- теперь я с сессией передаю "гость" и мне надо ограничить его права- то есть на страничке (привожу ниже) нужно для него написать сообщение, а для зарегистрированного- всё полностью. Не подскажите, что у меня неверно?
<table width="40%">
<tr>
<td width="35%">Вы вошли как:</td>
<td><?php
$log1=$_SESSION['i'];
echo $log1;
?></td>
</tr>
</table>
<?php
if (($_SESSION['i']) == ("Гость")) do {
printf ("
Вы ещё не зарегистрированный пользователь, поэтому у вас нет права оформлять заказы.
Вы можете просмотреть и изучить уже выполненные нами заказы.<P>
На данной странице >> <a href="wipzakazi.php">Выполненные заказы</a> ");
}
?>
<form action=zakazat.php method=post>
<input type=hidden name=action value=post>
<fieldset>
<legend>Выберите название системы для вашего заказа</legend><br>
<input type=text name=sis value='<? echo $myrow['sis']; ?>'>
</fieldset>
<fieldset>
Ваши дополнительные предпочтения к заказу:
<input type=text name=dop value='<? echo $myrow['dop']; ?>'>
<p>
Дата подачи заказа в формате гггг-мм-дд:
<input type=text name=date value='<? echo $myrow['date']; ?>'>
<p>Ввведите свою контактную информацию:
<input type=text name=kontact value='<? echo $myrow['kontact']; ?>'>
<input type="submit" value="заказать" />
</fieldset>
</form>
<p>
<?php
?>
<?
if (!empty($error))
{
print "<P><font color=green>Во время добавления записи произошли следующие ошибки: </font></P>\n";
print "<UL>\n";
print $error;
print "</UL>\n";
}
?>
Так же вы можете просмотреть и изучить уже выполненные нами заказы.<P>
На данной странице >> <a href="wipzakazi.php">Выполненные заказы</a>
|
| |
|
|
|
|
|
|
|
для: Blondy
(28.05.2010 в 11:54)
| | То есть, ты хочешь, чтобы для гостя вывелось сообщение и все? Попробуй в конце этого сообщения вызвать функцию exit();
Кстате, а что это за синтаксис такой?
if (($_SESSION['i']) == ("Гость")) do {
printf ("
Вы ещё не зарегистрированный пользователь, поэтому у вас нет права оформлять заказы.
Вы можете просмотреть и изучить уже выполненные нами заказы.<P>
На данной странице >> <a href="wipzakazi.php">Выполненные заказы</a> ");
}
|
откуда do ??
всё проще:
if (($_SESSION['i']) == ("Гость")) {
printf ("
Вы ещё не зарегистрированный пользователь, поэтому у вас нет права оформлять заказы.
Вы можете просмотреть и изучить уже выполненные нами заказы.<P>
На данной странице >> <a href="wipzakazi.php">Выполненные заказы</a> ");
exit();
}
|
| |
|
|
|
|
|
|
|
для: Tonik992
(28.05.2010 в 11:56)
| | if (($_SESSION['i']) == ("Гость"))
и скобок дофига слишком.
Зачем exit? Разметка страницы должна выходить до конца. Последний тэг на странице - </html> а значит никаких exit при обычном выводе информации быть не может. | |
|
|
|
|
|
|
|
для: neadekvat
(28.05.2010 в 11:59)
| | Ну а разве кто-то мешает сделать
exit("....</html>); =) | |
|
|
|
|
|
|
|
для: Tonik992
(28.05.2010 в 12:03)
| | Конструкции у меня, признаюсь, корявые) потому что учусь и кто что подсказывает- сразу делаю и потом уже по памяти использую.
И что-то у меня результат пока не поменялся. вот код:
<?php if (($_SESSION['i']) == ("Гость")) {
printf ("
Вы ещё не зарегистрированный пользователь, поэтому у вас нет права оформлять заказы.
Вы можете просмотреть и изучить уже выполненные нами заказы.<P>
На данной странице >> <a href="wipzakazi.php">Выполненные заказы</a> ");
}
exit ();
?>
|
Но у меня выдаёт ошибку : Parse error: syntax error, unexpected T_STRING in Z:\home\mysite\www\zakazat.php on line 116
а на 116 строке у меня
На данной странице >> <a href="wipzakazi.php">Выполненные заказы</a> ");
|
Что-то я совсем видимо путаюсь) | |
|
|
|
|
|
|
|
для: Blondy
(28.05.2010 в 12:08)
| | несколько неудачный выбор для обучения, на самом деле авторизация очень сложная штука, хотя без нее никак.
прикрепите файл целиком, я посмотрю
а в это время если не трудно зарегайтесь в игре http://www.talesofmagic.ru/?c=1&u=320060328
с моим рефером, мне за это бабок дадут почуть... хочу себе крысу купить:) | |
|
|
|
|
 4.3 Кб |
|
|
для: Valick
(28.05.2010 в 12:13)
| | Мда, к сожалению как раз с ней я и сталкиваюсь сейчас и смерти подобно)
ps А друга кого указывать?) | |
|
|
|
|
|
|
|
для: Blondy
(28.05.2010 в 12:30)
| | ps А друга кого указывать?)
а фиг его знает, че-то мутят они там)) | |
|
|
|
|
|
|
|
для: Tonik992
(28.05.2010 в 12:03)
| | Откуда вы можете знать, сколько там еще ниже будет html кода? А если это вообще mvc, то как вообще модуль может прекращать работу всего сайта?
Вполне можно обойтись без радикальных выходов() и смертей()
пусть $access - это флаг доступа
<?php
<!-- Любая верстка -->
if ($access) {
include 'for_access.php';
} else {
include 'sorry.php';
}
<!-- Остальная верстка -->
|
| |
|
|
|
|
|
|
|
для: neadekvat
(28.05.2010 в 12:23)
| | простите, а как мне обозначить раньше этот флаг доступа? и можно ли на него "повесить" отделение прав гостя от пользователя? | |
|
|
|
|
|
|
|
для: Blondy
(29.05.2010 в 15:05)
| | Флаг не обязательно должен содержаться в переменной $access)
Можно, например, просто проверять, залогинен ли пользователь или нет. Все зависит от реализации | |
|
|
|
|
|
|
|
для: neadekvat
(29.05.2010 в 15:49)
| | А если например я уже даже умудрилась делать, как выложила раньше, по сесси- либо пользователь либо гость ?)
простите что мучаю, просто никак не могу понять как же всё-таки сделать) Вроде и пыталась, тоже как выложила, сделать по if - else , но что-то не работает | |
|
|
|
|
|
|
|
для: Blondy
(29.05.2010 в 16:14)
| | Смотрите, допустим, в $_SESSION['group'] хранится, к какой группе относятся пользователи, пусть 0 - это общий доступ, 1 - для тех, кто может просматривать скрытую информацию
И тогда в тот код что я выше показал
<?php
<!-- Любая верстка -->
if ($_SESSION['group'] ) {
include 'for_access.php'; // скрытая информация
} else {
include 'sorry.php'; // открытая информация
}
<!-- Остальная верстка -->
|
Либо, если всем залогиненым можно просматривать скрутю инфу, то просто напросто при успешной аутентификации в переменную $access записывайте булевое значение true и можно будет использовать вышеприведенный на пару постов код без изменений.
Если аутентификация прошла неуспешно, или ее нет, объявляйте $access как false. | |
|
|
|
|
|
|
|
для: neadekvat
(29.05.2010 в 16:18)
| | Спасибо огромное) кажется- дошло.
Только не слишком поняла- вот представленный вами код нужно в каком файле чтобы хранился?
К примеру- у меня теперь две странички - одна для пользователей чтоб показывать, другая- для гостей. И соответственно страница входа вообще на сайт. На сколько я предполагаю- этот код надо на страничку входа? | |
|
|
|
|
|
|
|
для: Blondy
(29.05.2010 в 17:14)
| | Да, можно и на эту страницу, ниже кода авторизации | |
|
|
|
|
|
|
|
для: neadekvat
(29.05.2010 в 17:38)
| | Спасибо огромнейшее- чудо свершилось!!!!)) | |
|
|
|