[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Реалии php && html
NeverMore
В который раз сталкиваюсь с проблеммой, как необходимо правильно:
1) генерировать весь html код с помощью php функций и в конце выводить всё через один echo или использовать для вывода чистый html.
Приведу 2 примера, что бы вникнуть в суть проблеммы:

-----------Вариант № 1. Используем чистый php-----------

PHP
<?php
//Необходимые функции

/**
 * Представление ошибки
 *
 * @param описание ошибки $text
 * @return представление
 */

function showError($text) {
    return 
'<div class="error">' $text '</div>';
}

/**
 * Фильтруем строку на xss и sql
 *
 * @param строка $text
 * @return фильтрованная строка
 */
function filterString($text) {
    return 
mysql_escape_string(strip_tags($_COOKIE['name']));
}

//Инициализация

$name filterString($_COOKIE['name']);
$pass filterString($_COOKIE['pass']);

//Сборка странички

$r .= '<div class="head"></div>
    <div class="wrap">'
;

$users mysql_query('SELECT * FROM users WHERE name = "' $name '" AND password = "' $pass '"');
if (
mysql_num_rows($user) == 0) {
    
    
$r .= showError('Для просмотра данной страницы необходима регистрация');
    
} else {
    
$name stripslashes($name);
    
    
$r .= '
        <div class="userShow">
            <p>Добро пожаловать, ' 
$name .'</p>
        </div>'
;
}

$r .= '</div><!--end wrap-->';

//Вывод
echo $r;


-----------Вариант № 2. Используем php с вставками html-----------

PHP
<?php
//Необходимые функции

/**
 * Фильтруем строку на xss и sql
 *
 * @param строка $text
 * @return фильтрованная строка
 */
function filterString($text) {
    return 
mysql_escape_string(strip_tags($_COOKIE['name']));
}

//Инициализация

$name filterString($_COOKIE['name']);
$pass filterString($_COOKIE['pass']);

HTML
<div class="head"></div>
<div class="wrap">

PHP
<?php
$users 
mysql_query('SELECT * FROM users WHERE name = "' $name '" AND password = "' $pass '"');
if (
mysql_num_rows($user) == 0) {

HTML
<div class="error">Для просмотра данной страницы необходима регистрация</div>

PHP
<?php
} else {
    
$name stripslashes($name);

HTML
<div class="userShow">
<p>Добро пожаловать,
PHP
<?php echo <?php    
    
}

HTML
</div><!--end wrap-->





Спустя 8 часов, 59 минут, 20 секунд (15.12.2008 - 21:48) kirik написал(а):
А 3-й вариант ? =)
Лучше сразу отделять котлеты от мух движок от ГУИ.. тоесть весь основной пхп код (запросы к БД и прочее) - в одном файле, а хтмл (+ некоторые циклы) - в другом..
тоесть идея такая
index.php
PHP
//Необходимые функции

/**
 * Представление ошибки
 *
 * @param описание ошибки $text
 * @return представление
 */

function showError($text) {
    return '<div class="error">' . $text . '</div>';
}

/**
 * Фильтруем строку на xss и sql
 *
 * @param строка $text
 * @return фильтрованная строка
 */
function filterString($text) {
    return mysql_escape_string(strip_tags($_COOKIE['name']));
}

//Инициализация

$name = filterString($_COOKIE['name']);
$pass = filterString($_COOKIE['pass']);

$users = mysql_query('SELECT * FROM users WHERE name = "' . $name . '" AND password = "' . $pass . '"');
if (mysql_num_rows($user) == 0)
    $not_allowed = true;

include(
'htmlTemplate.php'); // Подключаем "темный" файл


htmlTemplate.php
PHP
<div class="head"></div>
    <div class="wrap">
<?
if(isset(
$not_allowed))
{
   echo showError('Для просмотра данной страницы необходима регистрация.');
}
else
{
?>
        <div class="userShow">
            <p>Добро пожаловать, <?=$_COOKIE['name']?></p>
        </div>
<?
}

short tags, конечно, должны быть включены

Как-то так.. =)

Спустя 5 дней, 2 часа, 10 минут, 52 секунды (20.12.2008 - 23:59) phpdude написал(а):
реалии - учить MVC. smarty к примеру юзай

Спустя 12 часов, 46 минут, 53 секунды (21.12.2008 - 12:46) sergeiss написал(а):
Я предпочитаю делать код ХТМЛ со вставками ПХП. Потому что, если всё это разнести, то сам потом через месяц уже не разберешься, что у тебя и где написано. Достаточно один раз "походить по граблям" (когда функционал раскидан по разным файлам) чтобы не мудрить без необходимости.

Отдельно (в другой файл) выношу только функции. Но, опять же, вызов этих функций - внутри "вставок" на ПХП.
Либо в отдельный файл выносятся крупные блоки, которые потом будут вставляться в основную страницу через include. Затем, при работе скрипта, в зависимости от некоторых условий будет подключен тот или другой файл.

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

Также делаю некоторые "финты ушами" smile.gif, чтобы видеть реально то, что получу в итоге (или близко к оному).
Например, часть кода вынесена в отдельный файл, который подключается потом. Как там использовать стайлы, чтобы видеть результат на этапе разработки? Но чтобы не было ничего лишнего в готовой странице?
Я делаю следующее.
PHP
<?php
if( false ) { ?>
<link rel="stylesheet" href="styles.css" type="text/css" media="all" />
<?php 

// далее идет основной код, в т.ч. и чистый ХТМЛ 


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.