

head from kettle
     
Профиль
Группа: Сын полка
Сообщений: 1273
Пользователь №: 32830
На форуме: 12 лет, 8 месяцев, 24 дня
Карма: -11

|
Все доброго времени суток! Я эту проблему уже незнаю как и решить Мне нужно вот что. У меня на тестовом сайте есть формочка на вход. Так вот я ввожу имя и пароль и нажимаю войти потом там выводит Привет и т.д. Так вот мне нужно чтоб и мне выводило имя группы. У меня в таблице есть поле с паролем майлом паролем и т.д. и также поле где указывается номер(id) группы. Все группы хранятся в другой таблице. Так вот я пробовал сделать так. Когда при нажимании на кнопку войти идет запрос в базу где вытаскивает имя пароль и т.д. и также вытаскивает номер группы, а потом же делаю запрос в другую таблицу и вытаскиваю группу где id = номеру группы и потом все в сессии записываю, а потом вписываю в форму где выводи Привет и т.д.(после удачноного входа) так вот все имя маил выводит а вот группу нет при этом ошибок не выводит.Посмотрите код может чтонибудь заметете не то вот сама форма <?php
include ("system/data/db.php");
if (isset($_COOKIE['auto']) and isset($_COOKIE['login']) and isset($_COOKIE['password']) and isset($_COOKIE['group'])) { if ($_COOKIE['auto'] == 'yes') { $_SESSION['password']=strrev(md5($_COOKIE['password']))."b3p6f"; $_SESSION['login']=$_COOKIE['login']; $_SESSION['id']=$_COOKIE['id']; $_SESSION['group']=$_COOKIE['group']; } }
if (!empty($_SESSION['login']) and !empty($_SESSION['password'])) {
$login = $_SESSION['login']; $password = $_SESSION['password']; $result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db); $myrow = mysql_fetch_array($result);
} ?>
<?php if (!isset($myrow['avatar']) or $myrow['avatar']=='') {
print <<<HERE <form action="http://localhost/phpsite/?do=cache_reg" method="post"> <!-- testreg.php - это адрес обработчика. То есть, после нажатия на кнопку "Войти", данные из полей отправятся на страничку testreg.php методом "post" --> <p> <label>Ваш логин:<br></label> <input name="login" type="text" size="15" maxlength="15" HERE;
if (isset($_COOKIE['login'])) {
echo ' value="'.$_COOKIE['login'].'">'; }
print <<<HERE </p> <!-- В текстовое поле (name="login" type="text") пользователь вводит свой логин --> <p> <label>Ваш пароль:<br></label> <input name="password" type="password" size="15" maxlength="15" HERE;
if (isset($_COOKIE['password'])) {
echo ' value="'.$_COOKIE['password'].'">'; } print <<<HERE </p> <!-- В поле для паролей (name="password" type="password") пользователь вводит свой пароль --> <p> <input name="save" type="checkbox" value='1'> Запомнить меня. </p> <p> <input name="autovhod" type="checkbox" value='1'> Автоматический вход. </p>
<p> <input type="submit" name="submit" value="Войти"> <!-- Кнопочка (type="submit") отправляет данные на страничку testreg.php --> <br> <!-- ссылка на регистрацию, ведь как-то же должны гости туда попадать --> <a href="/?do=registration">Зарегистрироваться</a>
<br> <!-- ссылка на восстановление пароля --> <a href="send_pass.php">Забыли пароль?</a>
</p></form> <br> Вы вошли на сайт, как гость<br><a href='#'>Эта ссылка доступна только зарегистрированным пользователям</a> HERE; }
else {
print <<<HERE |<a href='/?do=page_profile&id=$_SESSION[id]'>Моя страница</a><br>|<a href='/?do=userlist'>Список пользователей</a><br>|<a href='http://localhost/phpsite/?do=exit'>Выход</a><br><br>
<!-- Между оператором "print <<<HERE" выводится html код с нужными переменными из php --> Вы вошли на сайт, как <span> $_SESSION[login]</span><br> Вы вошли находитесь $_SESSION[group]<br> <!-- выше ссылка на выход из аккаунта --> <img alt='$_SESSION[login]' src='$myrow[avatar]'> <!-- Выше отображается аватар. Его адрес содержит переменная $myrow[avatar] -->
<!-- Именно здесь можно добавлять формы для отправки комментариев и прочего... -->
HERE;
}
?> а вот обработчик <?php session_start(); if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
if (empty($login) or empty($password)) { exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!"); }
$login = stripslashes($login); $login = htmlspecialchars($login);
$password = stripslashes($password); $password = htmlspecialchars($password);
$login = trim($login); $password = trim($password);
include ("system/data/db.php");
$ip=getenv("HTTP_X_FORWARDED_FOR"); if (empty($ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); }
mysql_query ("DELETE FROM oshibka WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 900");
$result = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db); $myrow = mysql_fetch_assoc($result);
if ($myrow['col'] > 2) { exit ("Вы набрали логин или пароль неверно 3 раза. Подождите 15 минут до следующей попытки.");
}
$password = md5($password); $password = strrev($password); $password = $password."b3p6f";
$result = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db) or die(mysql_error()); $myrow = mysql_fetch_assoc($result); $result3 = mysql_query("SELECT id,name FROM users_group WHERE id='".$myrow['group']."'",$db); $myrow3 = mysql_fetch_assoc($result3); if (empty($myrow['id'])) {
$select = mysql_query ("SELECT ip FROM oshibka WHERE ip='$ip'"); $tmp = mysql_fetch_row ($select); if ($ip == $tmp[0]) {
$result52 = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db); $myrow52 = mysql_fetch_assoc($result52);
$col = $myrow52[0] + 1; mysql_query ("UPDATE oshibka SET col=$col,date=NOW() WHERE ip='$ip'"); }
else {
mysql_query ("INSERT INTO oshibka (ip,date,col) VALUES ('$ip',NOW(),'1')"); }
exit ("Извините, введённый вами логин или пароль неверный.");
} else {
$_SESSION['password']=$myrow['password']; $_SESSION['login']=$myrow['login']; $_SESSION['id']=$myrow['id']; $_SESSION['group']=$myrow3['name']; }
if (isset($_POST['save'])){
setcookie("login", $_POST["login"], time()+9999999); setcookie("password", $_POST["password"], time()+9999999); setcookie("id", $myrow['id'], time()+9999999); setcookie("group", $myrow3['name'], time()+9999999); }
if (isset($_POST['autovhod'])) {
setcookie("auto", "yes", time()+9999999); setcookie("login", $_POST["login"], time()+9999999); setcookie("password", $_POST["password"], time()+9999999); setcookie("id", $myrow['id'], time()+9999999); setcookie("group", $myrow3['name'], time()+9999999); }
echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";
?>
Всем заранее спасибо! Спустя 4 часа, 39 минут, 31 секунда (11.12.2011 - 18:26) Shkiper написал(а): Спустя 5 минут, 21 секунда (11.12.2011 - 18:31) Семён написал(а): Мне вещи постирать нада Спустя 22 минуты, 14 секунд (11.12.2011 - 18:53) Placido написал(а): А зачем отдельный запрос для того, чтобы вытащить название группы? Одним запросом через JOIN SELECT `users`.`id`, `users`.`avatar`, `таблица с группами`.`имя группы` FROM `users` LEFT JOIN `таблица с группами` ON `users`.`id группы` = `таблица с группами`.`id группы` WHERE `users`.`login` = '$login' AND `users`.`password`='$password' AND `users`.`activation` = '1';
Спустя 1 час, 33 минуты, 2 секунды (11.12.2011 - 20:26) Shkiper написал(а): Огромное спасибо!!!!! Просто в моей практике я невстречал JOIN. Если чесно сказать я про это только от вас узнал. Спустя 4 минуты, 40 секунд (11.12.2011 - 20:31) Shkiper написал(а): Placido при встраивании в обработчик этой конструкцци я столкнулся с проблемой я непонял ваши коментарии ну там например таблица с группами это таблица в таблице с пользователями или отдельная таблица с группами просьба поставте мне. И какоая переменная теперь будет содержать имя группы? Спустя 5 минут, 39 секунд (11.12.2011 - 20:37) Placido написал(а): Вместо "таблица с группами" нужно вставить имя второй таблицы, где хранятся id групп и имена групп. Вместо "id группы" и "имя группы" имена соответствующих полей. Спустя 1 минута, 31 секунда (11.12.2011 - 20:38) Shkiper написал(а): И какая переменная теперь будет содержать имя группы? Спустя 17 минут, 59 секунд (11.12.2011 - 20:56) Placido написал(а): Цитата (Deert @ 11.12.2011 - 19:38) | И какая переменная теперь будет содержать имя группы? |
$myrow['имя поля, которое вы указали вместо `имя группы`'] Спустя 15 часов, 7 минут, 30 секунд (12.12.2011 - 12:04) Shkiper написал(а): Извините, но в последнее время я очень туплю. Я просто PHP выучил давно но на время экзаменов все заволил теперь заново проктикуюсь. Placido, у меня не получилось. помоги мне. Вот структура users - таблица с пользователями group - строка в таблице users где лежит id группы пользователей users_group - таблица с группами id - ну это айди группы name - а это имя группы И пожалуйста вставте это в код обработчика т.к. я вставлял у меня произходили ошибки. Placido Большое тебе спасибо за все. И всем тем кто мне помог ранее. Спустя 4 часа, 20 минут, 14 секунд (12.12.2011 - 16:24) Shkiper написал(а): Всем спасибо я все решил, но не с помошью JOIN другоим способом. Помогите мне в другом вот запрос $result = mysql_query ("INSERT INTO `users_group` (`name`, `admin`, `banned`,'view_off_site','view_off_text','poll','downlaod','feedback','search') VALUES ('" . $name . "', '" . $admin . "','" . $banned . "','" . $view_off_site . "','" . $view_off_text . "','" . $poll . "','" . $downlaod . "','" . $feedback . "','" . $search . "')") or die(mysql_error()); Выдает ошибку You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''view_off_site','view_off_text','poll','downlaod','feedback','search') VALUES ('' at line 1 Чё за х**** извините за выражение? Спустя 12 минут, 47 секунд (12.12.2011 - 16:37) Placido написал(а): Проблема в апострофах. Нужно использовать обратные кавычки (`name`, `admin`, `banned`, `view_off_site`, `view_off_text`, `poll`, `downlaod`, `feedback`, `search`) Спустя 3 дня, 2 минуты, 35 секунд (15.12.2011 - 16:39) Shkiper написал(а): Спасибо!! Не обратил внимания!
|