Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1 2 3 4 5 ... >>

Общие вопросы новичков

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#21
Ну вот смотри, если у нас шаблон страницы, на странице должна проходить проверка сессии, к примеру
Как этот скрипт туда сунуть?

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#22
skad0, мой тебе совет не надо объединять логику и шаблоны.

скрипты пусть занимаются проверками без какого либо отображения, а когда ты уже знаешь кто запрашивает страницу и что надо отобразить, тогда уже собирай страничку или бери готовую(смотря как сделаешь) и показывай. Например так

 1 
 2 
 3 
 4 
 5 
 6 
 7 
<?php $templ file_get_contents('templ.html');
if (
/*вася*/) {
     
$var str_replace('{PRIV}''Привет Вася'$templ);
} else {
     
$var = echo str_replace('{PRIV}''Ты не Вася'$templ);
}
echo 
$var;?>

типа этого. Тоесть сперва работа кода и только когда код полностью отработал что-то показываем. И постарайся сразу себя приучить разделять логику от шаблонов. Например при помощи меток как у меня в примере.

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#23
А как вот к примеру для шаблона сделать?

{content} - обозначает вывод новостей из базы в нужном диве.

 1 
 2 
<?php $templ file_get_contents('templ.html'); 
       
str_replace('{content}''сам скрипт''$templ');?>

Так?

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#24
ну не совсем
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
<?php $con '';
foreach (
$news as $new) {
     
$con $con $new['title'] . '<br>';
}

$templ file_get_contents('templ.html'); 
$con str_replace('{content}'$con$templ); 
echo 
$con;?>

например так

тут мы в цикле перибираем все новости и выводим заголовок каждой. Обрати внимание мы не перезаписываем переменную $con а дозаписываем. таким образом к концу цикла в ней будут все новости из массива $news. А потом все эти новости тулим вместо метки в шаблоне.

Отредактировано автором 6 Окт 2010
Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#25
а если с контентом, то так:
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
<?php $con '';
foreach (
$news as $new) {
     
$con $con $new['title'] . '<br>' $new['content'];
}

$templ file_get_contents('templ.html'); 
$con str_replace('{content}'$con$templ); 
echo 
$con;?>

??? Кажись понял .. А можно ли заданные шаблонные переменные выводить в конфиги? Например:
config.php
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
<?php $con '';
foreach (
$news as $new) {
     
$con $con $new['title'] . '<br>' $new['content'];
}

$templ file_get_contents('templ.html'); 
$con str_replace('{content}'$con$templ); 
echo 
$con;
$name "Петя";
$name str_replace('{name}'$name$templ);
$title "Сайт" $name;
$name str_replace('{title}'$title$templ);?>

index.php
 1 
 2 
 3 
 4 
<?php include(config.php);
 
$razdel "Главная";  
$razdel str_replace('{raz}'$razdel$templ); // Срочные подключения, работающие только в этом документе?>


А ещё спросить хотел, можешь рассказать про "квотирование"? А то я нашел, кажется, ф-ция: ereg(), но, почитав, не очень понял, как ей пользоваться. Если это вообще та..

Добавлено 2010.10.06 21-56

Цитата
<?php if ($q = mysql_query("SELCT * FROM users WHERE pass=$_POST['pass'] AND login=$_POST['login'] LIMIT 1")) // проверяем логины и пароли
$_SESSION['user'] = mysql_result($q, 0); // устанавливаем ключ ID для сессии авторизованного
header("Location: ../main.php"); // отправляем на закрытую страницу
else
unset($_SESSION['user']);
header("Location: ../index.php"); // отправляем обратно на авторизацию
?>

Если про этот код, вот я его под себя дополнил подключил к бд:
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
<?php include ('mysql_conf.php');
if (
$q mysql_query("SELECT * FROM "$user_tb ." WHERE "$pass=$_POST['password'] ." AND "$login=$_POST['login'] ." LIMIT 1 "))  {
  
// проверяем логины и пароли
    
$_SESSION['user'] = mysql_result($q0); // устанавливаем ключ ID для сессии авторизованного
    
header("Location: ../main.php"); // отправляем на закрытую страницу
    
mysql_close ($link);
    die();
    }
else  {
  unset(
$_SESSION['user']);
  
header("Location: ../index.php"); // отправляем обратно на авторизацию
  
die();
}
?>

mysql_conf.php
 1 
 2 
 3 
 4 
 5 
 6 
 7 
<?php $host "localhost";
$user "root";
$pass "";
$db "sengine";
$users_tb "users";

$link mysql_connect($host$user$pass);?>

Запрос не обрабатывает >.> Оставляет на главной странице

Добавлено 2010.10.06 22-01

Пробил по учебникам и по eclipse ошибок не нашел. Структура, вроде, тоже верная ...

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#26
Во первых не юзай там
 1 
 2 
<?php mysql_result($q0);?>

юзай
 1 
 2 
<?php mysql_fetch_array($q);?>

во-вторых забудь про erg() юзай preg_match()
ereg() уже вырезают из PHP и на новых версиях она не будет работать.

в-третьих ты там выше приводил примеры где сначала выводил контент

 1 
 2 
<?php echo $con;?>

а потом продолжал его формировать. Так не делается. сначала полностью закончи его формировать а уже потом выводи.

в-четвертых забей на еклипс и так далее. пиши в самом первом файле который у тебя самым первым начинает работу в самом верху(начале)
 1 
 2 
<?php error_reporting(E_ALL);?>
оно и скажет тебе о всех ошибках

прикола с конфигом не понял. конфиг это то место где хранятся настройки такие как подключение к бд(пасс логин и имя базы) и так далее. например сколько новостей выводить на главной и все такое, логики там по идее быть не должно.

Отредактировано автором 6 Окт 2010
Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#27
Исправил, вот что получилось
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
<?php error_reporting(E_ALL);
include (
'mysql_conf.php');
if (
$q mysql_query("SELECT * FROM "$users_tb ." WHERE "$pass=$_POST['password'] ." AND "$login=$_POST['login'] ." LIMIT 1 "))  {
  
// проверяем логины и пароли
    
session_start();
    
$_SESSION['user'] = mysql_fetch_array($q); // устанавливаем ключ ID для сессии авторизованного
    
header("Location: ../main.php"); // отправляем на закрытую страницу
    
mysql_close ($link);
    die();
    }
else  {
  
// unset($_SESSION['user']); // если она не заслешована, выдает ошибку о undefinded variable, потому что сессия не открыта
  
header("Location: ../index.php"); // отправляем обратно на авторизацию
  
die();
}
?>

Не обрабатывает запрос. Точнее обрабатывает, но неадекватно. Не находит в базе должных логина и пароля


Про конфиг:
Имеется в виду файл, в котором будут содержаться постоянные переменные, нужные для шаблонов на нескольких страницах, что бы не копировать его постоянно

Цитата
<?php mysql_fetch_array($q);?>

Можешь пример привести? А то не особо понятно указано на php.ru/php.su/webteach.ru

Добавлено 2010.10.06 23-06

Про первое:
Я подумал, он же не знает получается, в каких полях искать логин и пароль, как их задать?

Прости, я, наверное, тебя уже запарил

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#28
Цитата
Прости, я, наверное, тебя уже запарил
Та лана, наоборот - форум крутим, то что надо)))

Цитата
Про первое:
Я подумал, он же не знает получается, в каких полях искать логин и пароль, как их задать?

SELECT * FROM `users` WHERE `поле`='значение'
или конкретнее
SELECT * FROM `users` WHERE `login`=$login
еще конкретнее
 1 
 2 
<?php $q mysql_query("SELECT * FROM "$users_tb ." WHERE  `pass`=".$_POST['password'] ." AND  `login`=".$_POST['login'] ." LIMIT 1 ")?>

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#29
Подставил, нет ошибок, запрос не обрабатывает

Добавлено 2010.10.06 23-23

Все настроил под свою БД...

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#30
а весь код выложить сюды?

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)
1 2 3 4 5 ... >>
Сейчас online: 120. Зарегистрированных: 1. Гостей: 119.