Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2012, 18:07   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию [PHP] Проблема при авторизации

Решил вспомнить, как писать сайт с 0, установил денвер, потом поставил smarty, почеркал немного и принялся за авторизацию. Так вот. Если форма пришла на сервер, то в session заношу имя пользователя. Далее ставлю эхо и проверяю, все работает: login->username, destroy->nothing. Теперь пишу в tpl условие isset. Оно не сработало! Тогда просто {$_session...}. Опять не сработало. Пересохранил tpl - сработало, то есть параша. Передаю переменную session в темплаты. Она не передается! Хотя на сервере все норм. Что мог в таком случае забыть хоть примерно? jQuery может как-то влиять? А может забыл какую-то функцию для разрешения глобальных переменных или еще чего? И вообще, такое ощущение, что у меня какая-то задержка компилирования tpl.

Последний раз редактировалось Krasi; 24.02.2012 в 02:52.
Krasi вне форума Ответить с цитированием
Старый 25.02.2012, 09:59   #2
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

ОК, как короче всего выполнить авторизацию? Чтобы 100% работало.
Krasi вне форума Ответить с цитированием
Старый 25.02.2012, 14:53   #3
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Krasi, тут бы код ваш не помешал.

Цитата:
И вообще, такое ощущение, что у меня какая-то задержка компилирования -tpl.
А вообще такое иногда бывает. Просто поудаляйте уже скомпилированные файлы.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 25.02.2012, 16:45   #4
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Уже удалял (из templates_c). Код позже скину
Krasi вне форума Ответить с цитированием
Старый 26.02.2012, 16:06   #5
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

ВОТ
Код:
<?php
 /**
 * Example Application

 * @package Example-application
 */

require('./libs/Smarty.class.php');

$smarty = new Smarty;



//$smarty->force_compile = true;
$smarty->debugging = true;
$smarty->caching = true;
$smarty->cache_lifetime = 120;

$login = $_POST['login'];
session_start();


$link = mysql_connect("localhost", "kras", "981010")
        or die("Could not connect: " . mysql_error());
mysql_select_db('st')
	or die("Could not select: " . mysql_error());

if (isset($_POST['login']) && isset($_POST['pass']))
{
    $login = mysql_real_escape_string($_POST['login']);
    $pass = $_POST['pass'];
    //$password = md5($_POST['pass']);
    // делаем запрос к БД
    // и ищем юзера с таким логином и паролем

    $query = "SELECT `user_id` FROM `st_users` WHERE `login`='{$login}' AND `pass`='{$pass}' LIMIT 1";
    $sql = mysql_query($query) or die(mysql_error());

    // если такой пользователь нашелся
    if (mysql_num_rows($sql) == 1) {
        // то мы ставим об этом метку в сессии (допустим мы будем ставить ID пользователя)

        $row = mysql_fetch_assoc($sql);
        $_SESSION['user_id'] = $row['user_id'];
	$_SESSION['username'] = $login;
        // не забываем, что для работы с сессионными данными, у нас в каждом скрипте должно присутствовать 
    }
    else {
        die('Такой логин с паролем не найдены в базе данных. И даём ссылку на повторную авторизацию.');
    }
}

if ($_GET['log0']=="1"){
	session_unset();
	session_destroy();
	header("Location: ./index.php");
} 

   
$name = "dac";



if (isset($_SESSION['username'])) {
    echo "Hello <b>{$_SESSION['username']}</b>";
    
} else {

    echo "Hello <b>Guest</b><br />";
    echo "Would you like to login?";

}

$result = mysql_query("SELECT tour_name FROM st_tours where tour_num = '1'");
$res = mysql_fetch_array($result);
echo ($res[0]);

echo $_SESSION['username'];
$smarty->assign('gopfo', $_SESSION['username']);
echo($log);
$smarty->display('index.tpl');

mysql_close($link);?>
tpl:
Код:
{config_load file="test.conf" section="setup"}
{include file="header.tpl" title=ST}
<script src="./js/jquery.js"></script>
<script type="text/javascript" src="./js/jquery.dropdownPlain.js"></script>
<link rel="stylesheet" type="text/css" href="./css/style.css" />
<link rel="stylesheet" type="text/css" href="./index.php" />
<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="./css/ie.css" /><![endif]-->


<script type="text/javascript">

</script>
<a href="">{$gopfo}</a>
{if !$gopfo}Вход{else}ЧУ{/if}
<ul class="dropdown">
{$gopfo}
    <li>{if $gopfo==""}<a href="#">Вход</a>
        <ul><form action="" id ="lg" method="post" enctype="multipart/form-data">
            <li>Логин:<div align = "center"><input name="login" type="text"></div></li>
            <li>Пароль:<div align = "center"><input name="pass" type="password" size="20"></div></li></form>
		<li><a href="" onClick = "document.getElementById('lg').submit(); return false;">Войти</a></li>
{else}<a href="./index.php?log0=1">Выход</a><ul>{/if}
        </ul>
    </li>
</ul>
Ну тут есть немного лишнего, я пока не приводил в порядок, но суть в том, что скрипт в php (echo) работает, а переменная $gopfo в tpl изменяется как-то не логически.

Последний раз редактировалось Krasi; 26.02.2012 в 16:08.
Krasi вне форума Ответить с цитированием
Старый 26.02.2012, 21:03   #6
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

А если без этого попробовать?
Код:
document.getElementById('lg').submit(); return false;
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 27.02.2012, 13:48   #7
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Неа, не помогает! Скрин... А во вкладке <input type="submit" ...>
Изображения
Тип файла: jpg Безымянныйlog.jpg (16.2 Кб, 132 просмотров)
Krasi вне форума Ответить с цитированием
Старый 28.02.2012, 18:36   #8
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

А никто не может себе попробовать поставить. Это же лишь новый smarty + кое-какое java, которое не должно, по-идее, что-то портить (или я что-то не знаю?) + 2 файла + новый Denver. Это прямо со скриптами косяк? Я то думаю, что написал что-то не правильно, все-таки.
Krasi вне форума Ответить с цитированием
Старый 29.02.2012, 00:54   #9
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Ну уговорили..

В общем, я закомментила строку
Код:
$smarty->caching = true;
и все заработало.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 29.02.2012, 15:09   #10
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Точно 120 сек примерно проходило, и переменная, наконец, доходила до tpl.
Krasi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возврат на придыдущюю страницу при авторизации PadVonE PHP 2 05.03.2011 22:31
Не проходит логическое условие при авторизации. nikolas0 Работа с сетью в Delphi 13 22.01.2011 21:56
Смена картинки при авторизации tyze Общие вопросы Delphi 3 30.06.2010 21:49
Проблема авторизации на сайте Terikon Работа с сетью в Delphi 0 17.03.2009 16:50