Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как закинуть html cnраницу в ob_start, нужно созранить страницу,но теги мешают 
:(
    Опции темы
kelario
Дата 23.11.2009, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Доброе утро понедельника.

У меня есть html страница.Мне нужно записать в неё х значения и сохранить.
Код

<?
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   $name= trim($_POST['name']);
   $category = trim($_POST['category']);
   $location = trim($_POST['location']);
   $webpage = trim($_POST['webpage']);
   $keyword = trim($_POST['keyword']);
   }


ob_start();  

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
</head>

<body>
<table width="943" height="128" border="1" bordercolor="#9933CC"cellpadding="0" cellspacing="0" >
  <tr>
    <td width="221" rowspan="4">&nbsp;</td>
    <td width="89">Name</td>
    <td width="148"> echo $name; </td>
    <td width="226"><div align="center">DESCRIPTION</div></td>
    <td width="122">&nbsp;</td>
    <td width="111">&nbsp;</td>
  </tr>
  <tr>
    <td>PRODUCT CATEGORY</td>
    <td>echo $category; </td>
    <td rowspan="3"> echo $keyword; </td>
    <td>&nbsp;</td>
    <td>12</td>
  </tr>
  <tr>
    <td>LOCATION</td>
    <td> echo $location; </td>
    <td>&nbsp;</td>
    <td>32</td>
  </tr>
  <tr>
    <td>WEB PAGE</td>
    <td> echo $webpage; </td>
    <td>&nbsp;</td>
    <td>43</td>
  </tr>
</table>
</body>
</html>
$content = ob_get_contents();
ob_end_clean();
file_put_contents();
?>


естественно php встретив html теги начинает ругаться.Как это обойти и сохранить файл ? Может есть альтернатива ob-start ?

Спасибо.
PM MAIL   Вверх
MoLeX
Дата 23.11.2009, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Код

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   $name= trim($_POST['name']);
   $category = trim($_POST['category']);
   $location = trim($_POST['location']);
   $webpage = trim($_POST['webpage']);
   $keyword = trim($_POST['keyword']);
   }
ob_start(); 

echo '
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
</head>
<body>
<table width="943" height="128" border="1" bordercolor="#9933CC"cellpadding="0" cellspacing="0" >
  <tr>
    <td width="221" rowspan="4">&nbsp;</td>
    <td width="89">Name</td>
    <td width="148">'.$name.'</td>
    <td width="226"><div align="center">DESCRIPTION</div></td>
    <td width="122">&nbsp;</td>
    <td width="111">&nbsp;</td>
  </tr>
  <tr>
    <td>PRODUCT CATEGORY</td>
    <td>'.$category.'</td>
    <td rowspan="3"> echo $keyword; </td>
    <td>&nbsp;</td>
    <td>12</td>
  </tr>
  <tr>
    <td>LOCATION</td>
    <td>'.$location.'</td>
    <td>&nbsp;</td>
    <td>32</td>
  </tr>
  <tr>
    <td>WEB PAGE</td>
    <td>'.$webpage.'</td>
    <td>&nbsp;</td>
    <td>43</td>
  </tr>
</table>
</body>
</html>';
$content = ob_get_contents();
ob_end_clean();
file_put_contents();
?>


Добавлено через 53 секунды
kelario, 
1. необходимо изучить основы PHP и HTML
2. в скрипты вставляй
Код

//    Отображение ошибок
error_reporting(E_ALL);




--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 23.11.2009, 12:52 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Чтобы РНР не ругался, надо просто сказать ему, что дальше идут теги

Код

<?
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   $name= trim($_POST['name']);
   $category = trim($_POST['category']);
   $location = trim($_POST['location']);
   $webpage = trim($_POST['webpage']);
   $keyword = trim($_POST['keyword']);
   }
ob_start();  
<head>
?>



очень просто

а еще лучше - вообще не использовать неочевидный механизм, смысл которого вам непонятен.
Для чего понадобилось "закидывать" страницу в ob_start()?

Это сообщение отредактировал(а) Ипатьев - 23.11.2009, 12:54
PM MAIL   Вверх
MoLeX
Дата 23.11.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(Ипатьев @  23.11.2009,  12:52 Найти цитируемый пост)
Код

ob_start();  
<head>
?>

не пройдет  smile 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
kelario
Дата 23.11.2009, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Код

echo '<html>'


Спасибо! Это так очевидно было,но за неимением опыта я об этом даже не подумал.Основы PHP конечно знать надо,но обучаться по ходу дела все же легче и интереснее.

    
Цитата

<?
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   $name= trim($_POST['name']);
   $category = trim($_POST['category']);
   $location = trim($_POST['location']);
   $webpage = trim($_POST['webpage']);
   $keyword = trim($_POST['keyword']);
   }
ob_start();  
<head>
?>

очень просто
а еще лучше - вообще не использовать неочевидный механизм, смысл которого вам непонятен.
Для чего понадобилось "закидывать" страницу в ob_start()?


разве встретив ?> пхп не прекратит обрабатывать дальнейший код ?

на счет того,зачем мне ob_start

у меня Х одинаковых страниц с разным содержимым.И это скрипт их создающий.Более чем вероятно,что есть более рациональный и менее ресурсоемкий способ,но я о нем не знаю поскольку  
Цитата

1. необходимо изучить основы PHP


если подскажите как сделать это правильнее,буду только рад smile 

Спасибо.

Это сообщение отредактировал(а) kelario - 23.11.2009, 17:01
PM MAIL   Вверх
Ипатьев
Дата 23.11.2009, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(kelario @  23.11.2009,  16:54 Найти цитируемый пост)
разве встретив ?> пхп не прекратит обрабатывать дальнейший код ?

прекратит. пока не встретит следующий <?

Обычно страницы создаются скриптом безо всякого буферинга.
Скрипту передаются параметры, на основании которых он и строит страницу
PM MAIL   Вверх
kelario
Дата 23.11.2009, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Цитата

прекратит. пока не встретит следующий <?


следовательно то,что между двумя ? в ob_start не попадет,ведь так?




PM MAIL   Вверх
Ипатьев
Дата 23.11.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



А куда оно должно пропасть? И зачем?
PHP изначально задумывался так, чтобы в противовес перлу у него ошибки могли выводиться на экран и его можно было встраивать прямо в HTML
И только потом выяснилось, что и то и другое - неправильно smile 
PM MAIL   Вверх
kelario
Дата 23.11.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Цитата

А куда оно должно попасть? И зачем?


В файл Х-нный  с  новыми значениями переменных.Понятно, что 
Цитата
Обычно страницы создаются скриптом безо всякого буферинга.

 но тем не менее smile
PM MAIL   Вверх
Ипатьев
Дата 23.11.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Не понял этого "но тем не менее".
вы уже сделали хоть один сайт по обычной схеме?
или вас что-то не устраивает из теоретических соображений?
PM MAIL   Вверх
kelario
Дата 23.11.2009, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Не цепляйтесь так к словам. smile 

меня все утсраивает,просто хочется закончить то,что начал.
PM MAIL   Вверх
bars80080
Дата 23.11.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(kelario @  23.11.2009,  17:15 Найти цитируемый пост)
Не цепляйтесь так к словам

да никто не цепляется, просто хочется знать - зачем?

вот я никогда не пользовался всякими ob_, а потому интересно, какая цель может сподвигнуть на это действие
PM MAIL WWW   Вверх
kelario
Дата 23.11.2009, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Зачем - я писал выше.Использую ob_ попросту потому,что это первое,что попалось мне под руку.Я осознаю,что можно как то сделать проще и быстрее,но просто я не знаю как smile 
Если кто ни будь поделится ссылочкой на скрипт дающий нужный результат,буду признателен.
PM MAIL   Вверх
Ипатьев
Дата 23.11.2009, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Вам предложили
Вы просто не читаете.

Главный принцип программирования - это разделение. Разделение кода и данных. Разделение данных и оформления.
В вашем случае данные и оформление надо хранить отдельно.
к примеру, введенные в форму данные записывать в текстовый файл. по строке на форму. А лучше - в базу данных.

плюс написать скрипт с шаблоном HTML
плюс написать скрипт с программой. который берет данные из текстового файла, забивает в шаблон и отдает пользователю.
PM MAIL   Вверх
nerezus
Дата 23.11.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



MoLeX, ?> html html <?
Неужели твоя IDE - это блокнот?) Ты же рушишь всякую подсветку и автокомплиты своими echo "дохрена строк";


Цитата

если подскажите как сделать это правильнее,буду только рад 
 на букс.ру книга гутманса стоит 150 рублей. Акция. Покупай, пока остались.
Если шаришь в английском, что читай книгу от зенда.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
kelario
Дата 24.11.2009, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Спасибо всем за советы.
Цитата

к примеру, введенные в форму данные записывать в текстовый файл. по строке на форму. А лучше - в базу данных.

плюс написать скрипт с шаблоном HTML
плюс написать скрипт с программой. который берет данные из текстового файла, забивает в шаблон и отдает пользователю. 


наверное так и попробую сделать.

у меня возник еще один вопрос.Он не по теме,но открывать новую наверное нет нужды.

Мне нужно,что бы пользователь на сервер залил файл,картинку.Вроде бы всё должно быть просто,но у меня проблемы с 
Код

enctype="multipart/form-data"


Дело в том,что мне нужно сохранить картинку в определенном месте и в то же время передать в переменную название этой картинки.Если в форме не ставить enctype,то никакая картинка никуда не сохраняется.Но если его поставить,то имя файла не удается занести в переменную.
Как убить двух зайцев ? или может быть файлу при сохранение можно задать имя ?
PM MAIL   Вверх
bars80080
Дата 24.11.2009, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(kelario @  24.11.2009,  00:32 Найти цитируемый пост)
или может быть файлу при сохранение можно задать имя ? 

можно. при сохранении с помощью move_upload_file() просто указываешь новое имя и всё
PM MAIL WWW   Вверх
Ипатьев
Дата 24.11.2009, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



проблема не в имени файла.
закачать можно только  с multipart/form-data
если какие-то проблемы при этом - они не от enctype
а от кучи других причин. 
в документации смотрим пример, выводим еррор, исправляем позор

сдается мне, вы, как и многие новички, наивно полагаете, будто файло можно легко скопировать с жетского диска пользователя.
а от формы вам нужно только имя файла.
PM MAIL   Вверх
MoLeX
Дата 24.11.2009, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(nerezus @  23.11.2009,  19:54 Найти цитируемый пост)
Неужели твоя IDE - это блокнот?

notepad++ и phpDesigner 7, это к делу не относится

в данном случае суть не меняется, и автору нагляднее - если надо вывести то использовать echo ...


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
K0T9I
Дата 24.11.2009, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 20.11.2009

Репутация: 2
Всего: 2



Цитата(kelario @ 24.11.2009,  01:32)
Дело в том,что мне нужно сохранить картинку в определенном месте и в то же время передать в переменную название этой картинки.

суперглобальный массив $_FILES:
Код

$_FILES['picture']['name'] - имя файла до его отправки на сервер;
$_FILES['picture']['size'] - размер принятого файла в байтах;
$_FILES['picture']['type'] - MIME-тип принятого файла (если браузер смог его определить);
$_FILES['picture']['tmp_name'] - содержит имя файла во временном каталоге на сервере;
$_FILES['picture']['error'] - код ошибки, которая может возникнуть при загрузке файла.

Код

<form action="index.php" method="post" enctype="multipart/form-data">
  <input name="picture" type="file" />
  <input type="submit" name="save" value="Save" />
</form> 

Код

$filename = basename($_FILES['picture']['name']);
if (!$_FILES['picture']['error'] && 
     copy($_FILES['picture']['tmp_name'],$some_path.$filename)){
  echo "uploaded";
}


в $filename будет имя файла, а сам файл скопируется в каталог $some_path.

я правильно тебя понял?

Это сообщение отредактировал(а) K0T9I - 24.11.2009, 07:44
PM MAIL   Вверх
bars80080
Дата 24.11.2009, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



K0T9I, вот я, насколько понимаю, copy() - запись дубликата файла, а move_upload_file() - просто изменение адреса.
зачем учить более затратным механизмам?
PM MAIL WWW   Вверх
kelario
Дата 24.11.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Цитата

я правильно тебя понял?


Да! Абсолютно правильно!Спасибо! Я просто пытался получить имя файла по аналогии со скажем текстовым полем.То есть $filename=$_POST['filename'] .Без enctype кстати прокатывало smile Но теперь и файл заливается куда нужно и имя его присутствует.Правда move_upload_file() вроде и вправду предпочтительнее.
Спасибо еще раз!
PM MAIL   Вверх
K0T9I
Дата 24.11.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 20.11.2009

Репутация: 2
Всего: 2



я понимаю, что есть правило, насвинячил - приберись. но файл загружается во временную папку и сборщик мусора php его удалит, поэтому столь важным этот принцип здесь не является.
а вообще функция move_uploaded_file конечно гораздо лучше, copy использую по привычке. smile 
в одном вы не правы, move_uploaded_file копирует файл, если источник и назначение в разных дисковых разделах, и переносит если в одном.  smile 
PM MAIL   Вверх
bars80080
Дата 24.11.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(K0T9I @  24.11.2009,  10:54 Найти цитируемый пост)
в одном вы не правы, move_uploaded_file копирует файл, если источник и назначение в разных дисковых разделах, и переносит если в одном

ну, мы же не знаем, на одном диске или на разных. 

PM MAIL WWW   Вверх
K0T9I
Дата 24.11.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 20.11.2009

Репутация: 2
Всего: 2



я хотел сказать просто, что почти всегда move_uploaded_file и copy идентичны по действию. в зависимости от расположения файла эта функция может вести себя и как copy, и как rename, только с доп. проверкой того что файл является загруженным. а большинстве случаев временная папка расположена в другом разделе, поэтому почти всегда move_uploaded_file аналогична copy, за исключением проверки. 
как-то так, а в остальном я с вами согласен, что неправильный метод дал smile 
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0963 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.