Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

Из PHP кода в код SMARTY

#1 shtil

shtil
  • Пользователь
  • 50 сообщений
  • Репутация: 0
0

Отправлено 01 Май 2009 - 16:17

Прошу прощение за такое кол-во тем, просто много вопросов...
допустим, у меня есть скрипт Shop-Script FREE(2005 года)
я хочу вставить туда регистрацию пользователей, а проблема у меня в авторизации, когда я вставляю в шаблон форму авторизации

Fatal error: Smarty: [in ./templates/tmpl1/index.tpl.html line 105]: syntax error: invalid attribute name: '=' (smarty_compiler.class.php, line 1433) in Z:\home\localhost\www\shop\smarty\smarty_compiler.class.php on line 2062


Зделайте, пожалуйста, код авторизации для SMARTY

<?php
$result = mysql_query ("SELECT id FROM users ORDER BY id DESC",$db);

@session_start();
if( isset($_POST['login']) && isset($_POST['password']))
{
$login = $_POST['login'];
$password = $_POST['password'];
$db = new mysqli(localhost, ragnarok, 248651793, shop);
if (mysqli_connect_error****** {
echo 'Невозможно подключится к базе данных: .mysqli_connect_error();
exit();
}
$sql = "select * from users where login = $login and password = $password";
$result = $db->query($sql);
if ($result -> num_rows > 0)
{
$_SESSION[valid_user] = $login;
}
$db->close();
}
if (isset($_SESSION[valid_user]))
{
echo "Вы вошли как <b>.$_SESSION[valid_user].</b><br><br>";

echo '<a href="logout.php">Выход</a><br>';
}
else
{
if (isset($login))
{
echo '<img src=images/no.png> Вход невозможен.<br>';
}
else
{
echo 'Вы не вошли в систему<br>';
}
?>
<p>
<form action="index.php" method="POST" enctype="multipart/form-data">
<p>Логин <br><input type="text" name="login"><br>
<p>Пароль <br><input type="password" name="password"><br>
<p><input type="submit" value="Войти "> <p><a href="registration.php">Регистр ация</a>


<?
}
?>

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 01 Май 2009 - 21:57

shtil, поймите, что SMARTY это шаблонизатор с добавлениями некоторых конструкций(например: условия, выбор)
Нельзя в шаблон вставлять код SMARTY
А вообще ваш код не заработает! Где все кавычки? Если вы думаете, что скрипт будет и без них работать, то вы глубоко ошибаетесь.

А вообще структура такова:
У нас есть каталог author и в нём 3 файла(1 - исполняемый, 2-шаблона):
index.php
<?php
session_start();

// Обратите внимание: в слове Smarty буква 'S' должна быть заглавной
require_once('Smarty.class.php');
$smarty = new Smarty();

//Настройки абсолютных путей, не обязательны, но советуют
/*********************************************
$smarty->template_dir = '/web/www.example.com/guestbook/templates/';
$smarty->compile_dir = '/web/www.example.com/guestbook/templates_c/';
$smarty->config_dir = '/web/www.example.com/guestbook/configs/';
$smarty->cache_dir = '/web/www.example.com/guestbook/cache/';
**********************************************/

if(isset($_POST['login']) && isset($_POST['password']))
{
$login = mysql_escape_string($_POST['login']);
$password = mysql_escape_string($_POST['password']);

$db = new mysqli("localhost", "ragnarok", "248651793", "shop") or die("Невозможно подключится к базе данных:".mysqli_connect_error());
$sql = "SELECT * FROM users WHERE login='{$login}' AND password='{$password}'";
$result = $db->query($sql);
if ($result -> num_rows > 0)
{
$_SESSION['valid_user'] = $login;
}
$db->close();
}

$login = (isset($_SESSION['valid_user'])) ? $_SESSION['valid_user'] : "Гость";
$smarty->assign('name', $login);
$smarty->display('author.tpl');

if(empty($_SESSION['valid_user']))
$smarty->display('form.tpl');
?>


author.tpl
{if $name eq 'Гость'}
<img src="images/no.png"> Вход невозможен.<br>
{else}
Вы вошли как <b>{$name}</b><br><br>
<a href="logout.php">Выход</a><br>
{/if}


form.tpl
<form action="index.php" method="POST">
Логин: <input type="text" name="login"><br>
Пароль: <input type="password" name="password"><br>
<input type="submit" value="Войти">

  • 0

#3 shtil

shtil
    Topic Starter
  • Пользователь
  • 50 сообщений
  • Репутация: 0

Отправлено 02 Май 2009 - 08:43

так а куда папочку author кидать, в корень сайта?
ну вот я, к примеру, создам этих 3 файла, а как же всавить форму в index.tpl.htm во так {include file="authorization.tpl.html"}?
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 02 Май 2009 - 09:05

Киньте шаблоны, туда где у вас все остальные шаблоны. И по условиям, которые вы сами зададаите, включайте в шаблоны, подшаблоны.
Вроде как так и включать, как вы написали. Я со Smarty не работаю, но документация на русском есть... Не составит труда её почитать и разобраться.
Документация Smarty на русском
  • 0

#5 shtil

shtil
    Topic Starter
  • Пользователь
  • 50 сообщений
  • Репутация: 0

Отправлено 02 Май 2009 - 10:46

все разобрался, нет ошибок, но:
при вводе логина и пароля он просто обновляет страничку :P
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 03 Май 2009 - 10:10

Как понять просто обновляет? Проверка не выполняется? У меня просто на локалке данный скрипт не стоит, поэтому никак помочь не смогу. Могу только посоветовать, сделать проверку, например выводить состояние переменной
$_SESSION['valid_user']. Если оно пустое, значит проверка не проходит. И так докопаетесь до истины. Я вообще гляжу вы тут используете базу данных MySQLi, она идёт совместно с PHP5, как встроенная в него. У вас точно она? Возможно с этого стоило начинать...
  • 0

#7 shtil

shtil
    Topic Starter
  • Пользователь
  • 50 сообщений
  • Репутация: 0

Отправлено 06 Май 2009 - 10:45

я вставил в index.php вот эту строку
include("./AUTH.php");


и форма авторизации появилась наверху (рабочая)
спасибо :P
  • 0

#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 06 Май 2009 - 20:43

Всегда пожалуйста :P
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru