Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   php (http://forum.oszone.net/showthread.php?t=56565)

E-mail 13-11-2005 15:38 373481

php
 
никто не помнит функцию, которая переменную может читать как php код?

elfoflorien 13-11-2005 16:36 373491

E-mail
eval( $string ), по-моему, выполняет то, что ей передается в переменной $string, если я, конечно, вас правильно понял

E-mail 19-11-2005 21:58 375784

Parse error: parse error, unexpected T_STRING in C:\localhost\index.php(267) : eval()'d code on line 108


у меня код:

$content=eval($str);

$str - это значение поля таблицы, там находится html код и текст, одинарные и двойные кавычки не прослешованы, а так же php код вида <?php echo $ddr; ?>

что за ошибка и как ее исправить?


E-mail 20-11-2005 02:16 375820

eval('$content=$str;');
echo $content;

====

$str берется из базы и содержит ссылки вида $dir/a/f/g

в коде дано определение переменной $dir, но при обработке eval ничего не происходит!



elfoflorien ?

XCodeR 20-11-2005 12:27 375876

может поможет:
Цитата:

<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>

XCodeR 20-11-2005 12:28 375877

вместо $ пишем \$

E-mail 20-11-2005 15:02 375913

нет! не помогает, по моему это вообще бред,
тут есть ктонибудь кто знает?

XCodeR 20-11-2005 17:51 375939

E-mail
ага... в оф. мануале всегда один бред пишут...кАнечно....

XCodeR 20-11-2005 17:54 375940

P.S. если ты будешь писать $ без "\" то PHP воспримет эту запись как переменную и вставит ее содержимое в eval...

E-mail 20-11-2005 19:50 375966

я читал этот ман, вот МОЙ код:

$dir="a/s/d/f/g";

mysql_connect($db['host'],$db['user'],$db['pass']);
mysql_select_db($db['name']);

$row=mysql_fetch_row(mysql_query($query));

eval('$content=$row[0];');

echo $content;


=====================

в базе хранится:

<a href=$dir/image/f.html>

=====================
переменная $row[0] достает это из базы и я хочу сделать так чтобы вместо переменной $dir писалось предопределенное ей в скрипте значение.

решение есть?

vadimiron 20-11-2005 20:57 375979

Цитата:

eval('$content=$row[0];');
В мануале же по-другому стоит ;)
PHP код:

eval("\$content=\"$row[0]\";"); 


Igor_I 20-11-2005 21:23 375992

Ну а привести, то, чо выводит echo ?
vadimiron
Да уж бывает. :) Ну да ладно. :)

Найди отличия.
Ман
PHP код:

$string 'cup';  
$name 'coffee';  
$str 'This is a $string with my $name in it.';  
echo 
$str"\n";  
eval(
"\$str = \"$str\";");  
echo 
$str"\n"

Твое.
PHP код:

$dir="a/s/d/f/g";      
eval(
'$content=$row[0];');    
echo 
$content


E-mail 20-11-2005 23:31 376021

echo выводит:

<a href=$dir/image/f.html>

т.е. то же самое что и хранится в базе.


с обратными слешами работает точно также, я же уже писал.

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



мой код:

PHP код:

$dir="опываопывопаоывпаывппаывпывпа";

    
mysql_connect($db['host'],$db['user'],$db['pass']);
    
    unset(
$db['host']);
    unset(
$db['user']);
    unset(
$db['pass']);
    
    
mysql_select_db($db['name']);
    
    unset(
$db['name']);
    

$row=mysql_fetch_row(mysql_query("SELECT FROM WHERE "));

$str=$row[0];
eval(
"\$str = \"$str\";");
echo 
$str

выдает:

<a href=$dir/image/f.html>

E-mail 20-11-2005 23:32 376024

более того теперь появилась ошибка:

Parse error: parse error, unexpected T_STRING in C:\localhost\test.php(52) : eval()'d code on line 108

vadimiron 21-11-2005 00:15 376031

Цитата:

echo выводит:

<a href=$dir/image/f.html>

т.е. то же самое что и хранится в базе.
Честно, у меня выводится то, что надо. :( не знаю, в чём проблема
Вот полный код
PHP код:

$dir="a/s/d/f/g";
$row[0]="<a href=$dir/image/f.html>";
eval(
"\$content=\"$row[0]\";");
echo 
$content

Вывод:
HTML код:

<a href=a/s/d/f/g/image/f.html>

E-mail 21-11-2005 02:15 376060

ну у меня в базе хранится гораздо больший код html содержащий как и полагается яваскрипты ксс и многое другое включаещее в себя одинарные и двойные кавычки

и как подозреваю все дело именно в них они вызывают эту ошибку и их надо конвертировать со слешом, только боюсь многие скрипты от этого перестанут работать..


E-mail 21-11-2005 02:22 376061

есть другое решение, кроме слеширования содержимого в базе?

Igor_I 21-11-2005 20:14 376326

А нафига тебе код в базе? Я вот не понимаю ... Смысл?
Я лично всегда думал, что база нужна для хранения данных, которые надо будет отсортировать, вывести по определенному признаку, ну или что-то еще в подобном роде. Но чтобы хранить в базе html-страницы. А ты случайно картинки в базе не хранишь? :)
Эх, "раздолбая" Фаната на тебя нет :)
==========
Или опять, сайт не твой и возится-переделывать не хочется.

E-mail 21-11-2005 20:42 376340

Igor_I там код html css js vbs + php переменные - пути к директориям например

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

E-mail 21-11-2005 20:43 376341

Igor_I а кто сказал что картинки в блоб виде хранить хуже чем просто ссылки?

Igor_I 21-11-2005 22:23 376382

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

E-mail 22-11-2005 19:33 376656

зачем нужны файлы если есть база?

нет не проще.

Igor_I 22-11-2005 19:58 376662

Цитата:

это делается для того чтобы захочется мне в моей cms поменять скажем структуру сайта - я работаю только мышкой и все никуда лезть в код не надо.
Да возьми любую CMS, там тоже можно поменять структуру сайта. Все хранится в файлах.
Можно посмотреть конкретный пример? Может я просто не знаю, как это удобно.


Время: 12:54.

Время: 12:54.
© OSzone.net 2001-