Регистрирайте се безплатно, за да използвате услугите на сайта! | Вход
Начало Новини ИТ Работа Форум Видео Уроци Скриптове WiFi точки MyLinks Mytech Още


Нова тема
функция за изпълнение на php код от стринг?
Тази тема е погледната 270 пъти
Добави темата към любими | Принтирай темата | Нова тема 
Публикувано на: 03.12.2008 21:22
zipopro
Шогун

Мнения: (764)

Някой знае ли такава функция? Опитвам се да измисля начин чрез който автоматично да ми изкарва case + модул, като модулите(имената им) са в array(масив нали). Опитах със for във switch но ми дава грешка ест.сега ще се опитам да приложа:
for(...)
{
$string .= "case: ... break;";
}
и после
switch(..)
{
функция_за_изпълняване_на_пхп_код($string);
}
Поздрави!


ЕДИТ://
Намерих я... Как не се сетих че е eval :) апффф... Но имам друг проблем. Как да направя:
"<?php" и "?>" във eval функцията? пробвах така, пробвах с html special chars на тези знаци не става...


 
Това мнение е редактирано от zipopro на 03.12.2008 21:36
---------------------------
Потребител от: 20.12.06 | Всички уроци от zipopro | Всички скриптове от zipopro

Лъчезар Петров Лечев - 14 - Стара Загора - Уеб Програмист
Винчета, болчета гайкии...!
напиши eMail напиши лично съобщение виж профила на zipopro
темата е прекратена! 
Публикувано на: 04.12.2008 10:37
Bibi
Ронин

Мнения: (295)

А за какво са ти тези "<?php" и "?>" вътре в кода?

Иначе може да минеш и без eval():

CODE
1
2
3
$func = 'some_function';
...
$func($param1, $param2);


 
Това мнение е редактирано от Bibi на 04.12.2008 10:38
---------------------------
Потребител от: 15.01.06 | Всички уроци от Bibi | Всички скриптове от Bibi
напиши eMail напиши лично съобщение виж профила на Bibi
темата е прекратена! 
Публикувано на: 04.12.2008 12:40
zipopro
Шогун

Мнения: (764)

Е как без eval бе? Иначе как ще сложа for във switch??? Да си чувал че това е невъзможно без eval? и каква ти е идеята за тая функция ли кво е там?
$func = 'some_function';
...
$func($param1, $param2);
???
Не ми тряя функция трябва ми само да си прави case със име извадено от array, като правя case-овете със for или while сега. Аз го направих, но ме интересува защо не мога да сложа: <?php и ?> във eval функцията?


 
---------------------------
Потребител от: 20.12.06 | Всички уроци от zipopro | Всички скриптове от zipopro

Лъчезар Петров Лечев - 14 - Стара Загора - Уеб Програмист
Винчета, болчета гайкии...!
напиши eMail напиши лично съобщение виж профила на zipopro
темата е прекратена! 
Публикувано на: 04.12.2008 14:32
imagination
Ронин

Мнения: (178)

Защо просто не го инклуднеш ? Използването на евал води до неразбираем и труден за поддръжане код.


 
---------------------------
Потребител от: 17.02.06 | Всички уроци от imagination | Всички скриптове от imagination

http://www.absurdi.com
напиши eMail напиши лично съобщение виж профила на imagination
темата е прекратена! 
Публикувано на: 04.12.2008 17:14
zipopro
Шогун

Мнения: (764)

колко пъти трябва да казвам че ВЪВ SWITCH НЕ МОЖЕ FOR ИЛИ WHILE ДА СЕ СЛОЖИ???? Освен ако не е във case!!! толкова ли не разбрахте? Имам един масив и от тоя масив всяка стойност тряя да ми се слага като CASE $massiv[num]. Няма как да се инклудне щото и да го инклуднеш  пак дава грешка аз правя нещо такова:
CODE
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$massiv = array(....);
switch($geta)
{
  
for($i=0;$i < count($massiv);$i++)
   {
     
case $massiv[$i]:
     
include $massiv[$i].".inc.php";
     
break;
  
}
}
?>
Капиш??? А това в php е невъзможнозатова ползва eval!


 
---------------------------
Потребител от: 20.12.06 | Всички уроци от zipopro | Всички скриптове от zipopro

Лъчезар Петров Лечев - 14 - Стара Загора - Уеб Програмист
Винчета, болчета гайкии...!
напиши eMail напиши лично съобщение виж профила на zipopro
темата е прекратена! 
Публикувано на: 04.12.2008 18:42
HunteR666
Ронин

Мнения: (22)

ОМГ :O

Какви са тези работи.

Това не става ли?

 CODE
1
2
3
4
5
6
7
8
9
$massiv = array("fail1","fail2","fail3");
if (in_array($_GET['geta'], $massiv) && file_exists($_GET['geta'].".inc.php"))
{
   
include($_GET['geta'].".inc.php");
}
else
{
   
include("default.php");
}

Не можах да разбера точно идеята ти за това налучквах.


 
---------------------------
Потребител от: 19.06.08 | Всички уроци от HunteR666 | Всички скриптове от HunteR666
напиши eMail напиши лично съобщение виж профила на HunteR666
темата е прекратена! 
Публикувано на: 04.12.2008 19:29
zipopro
Шогун

Мнения: (764)

Ще стане. но въпроса е кода да е оптимален. До колкото знам винаги трябва да използваш switch за разделение на страници(index.php?act=modula) с if става дълго и широко. Ти проверяваш дали файла съществува, дали има такъм файл в масива като този от гета... Аз правя кодче за изреждане на файловете в папката, слагам в масив и после правя case-ове. чисто и просто =) eval не го ползвам за миниони редове код, а за 5-6 реда. При мене файловете директно се взимат от папката няма какво после да проверявам дали съществува или не а директно си прави case =) Въпроса е единственото което аз да правя е да сложа нов модул в папката, останалото автоматично.


 
---------------------------
Потребител от: 20.12.06 | Всички уроци от zipopro | Всички скриптове от zipopro

Лъчезар Петров Лечев - 14 - Стара Загора - Уеб Програмист
Винчета, болчета гайкии...!
напиши eMail напиши лично съобщение виж профила на zipopro
темата е прекратена! 
Публикувано на: 04.12.2008 19:35
HunteR666
Ронин

Мнения: (22)

Ахамз. Сега схванах идеята ти :)

Въпрос. Защо са ти case-ове?
За тази цел изобщо не ти трябват.

Примерно ето как ще стане.

Така приемаме, че в масива са следните файлове.
$massiv = array("file1","file2","file3");
като разширенията им са скрити.

След, което ги извеждаш на екрана.

foreach ($massiv as $file)
{
    echo "<a href=\"?geta=$file\">$file</a><br />\n";
}

Това ти е нещо като меню.
После по-долу слагаш кода, който ти дадох в предишното си мнение и става работата :)


 
Това мнение е редактирано от HunteR666 на 04.12.2008 19:36
---------------------------
Потребител от: 19.06.08 | Всички уроци от HunteR666 | Всички скриптове от HunteR666
напиши eMail напиши лично съобщение виж профила на HunteR666
темата е прекратена! 
Публикувано на: 04.12.2008 20:41
zipopro
Шогун

Мнения: (764)

Идеята ти е добра, да. Може и така да го направя, НО темат е за eval... Ако няма да го правя така поне ще знам как се използва eval така че да се придържаме към темата =)!
Поздрави!


 
---------------------------
Потребител от: 20.12.06 | Всички уроци от zipopro | Всички скриптове от zipopro

Лъчезар Петров Лечев - 14 - Стара Загора - Уеб Програмист
Винчета, болчета гайкии...!
напиши eMail напиши лично съобщение виж профила на zipopro
темата е прекратена! 
Публикувано на: 04.12.2008 21:53
HunteR666
Ронин

Мнения: (22)

Хах странен пич си баце :D

Търсиш толкова неоптимизирани начини, но както и да е.

CODE
1
2
3
4
5
6
7
8
9
10
11
$massiv = array("1","2","3"); // тук са ти файловете

$switch = 'switch($geta) { ';
foreach ($massiv as $file)
{
   
$switch .= "case ".$file.": include \"$file.inc.php\"; break; ";
}
$switch .= "}";

$geta = 1;
eval ($switch);


 
---------------------------
Потребител от: 19.06.08 | Всички уроци от HunteR666 | Всички скриптове от HunteR666
напиши eMail напиши лично съобщение виж профила на HunteR666
темата е прекратена! 
Публикувано на: 04.12.2008 22:06
zipopro
Шогун

Мнения: (764)

Пич или наистина не четеш какво пиша или просто гледаш да изкараш още някое мнение в повече:
ОТ ПЪРВИЯ МИ ПОСТ:
ЕДИТ://
Намерих я... Как не се сетих че е eval :) апффф... Но имам друг проблем. Как да направя:
"<?php" и "?>" във eval функцията? пробвах така, пробвах с html special chars на тези знаци не става...
как да подкарам "<?php" и "?>" В EVAL ми е въпроса.
СТИГА СПАМИ! Поздрави!


 
---------------------------
Потребител от: 20.12.06 | Всички уроци от zipopro | Всички скриптове от zipopro

Лъчезар Петров Лечев - 14 - Стара Загора - Уеб Програмист
Винчета, болчета гайкии...!
напиши eMail напиши лично съобщение виж профила на zipopro
темата е прекратена! 
Публикувано на: 04.12.2008 22:11
HunteR666
Ронин

Мнения: (22)

Хаха сега пък съм спамел. Все едно. Как ще подкараш <?php ?> в eval-а бре.
Нали самия той се намира м/у <?php и ?>
Все едно се опитваш да направиш:
<?php
<?php
// нещо си
?>
?>

Това задължително извежда грешка!

ЕДИТ: Аз повече няма да пиша в тази тема. Като си подредиш мислите малко тогава може да се включа. Това беше от мен. Опитах се да помогна, но явно не става.


 
Това мнение е редактирано от HunteR666 на 04.12.2008 22:12
---------------------------
Потребител от: 19.06.08 | Всички уроци от HunteR666 | Всички скриптове от HunteR666
напиши eMail напиши лично съобщение виж профила на HunteR666
темата е прекратена! 
Публикувано на: 04.12.2008 22:22
zipopro
Шогун

Мнения: (764)

Тва  <?php го видях в един форум(не беше български) за това питам, мисля че може да има приложение. А и виж цялата тема се казва:
"функция за изпълнение на php код от стринг?" Както виждаш не те питах КАК да го направя питах те за функция не е ли така? И да помогна ми със кода но все обмислям нещата, така че не е казано че задължително ще използвам switch  =) Айде изтривайте тая тема че така или иначе нищо не стана от нея.
Поздрави!


 
---------------------------
Потребител от: 20.12.06 | Всички уроци от zipopro | Всички скриптове от zipopro

Лъчезар Петров Лечев - 14 - Стара Загора - Уеб Програмист
Винчета, болчета гайкии...!
напиши eMail напиши лично съобщение виж профила на zipopro
темата е прекратена! 
Публикувано на: 06.12.2008 01:10
CBeTHaX
Ронин

Модератор

Мнения: (234)

Активирах темата отново, за да се изкажа по въпроса, не е ли по-лесно

CODE
1
2
3
4
5
6
7
for(...) // това ти играе ролята на цикъла
{
    if(<някакво условие>) // това на case
    {
        функция($string);
    }
}

Ако имаш неясноти пиши, и по спокойно човека пише, за да ти помогне ти си тръгнал да го нападаш.
Същото важи и за мен, ако ми се изрепчиш, няма да получиш ясен отговор...


 
Това мнение е редактирано от CBeTHaX на 06.12.2008 01:13
---------------------------
Потребител от: 07.01.07 | Всички уроци от CBeTHaX | Всички скриптове от CBeTHaX

http://www.ricari-bg.com
напиши eMail напиши лично съобщение виж профила на CBeTHaX
темата е прекратена! 
Публикувано на: 06.12.2008 01:27
zipopro
Шогун

Мнения: (764)

WTF? Какво преча просто казвам че не търся мнение как да го направя, търся си нещо свързано с функцията...  Аз знам как да си го направя, не съм чак толкова тъп. Като гледам сега ти спамиш, понеже не се придържаш към темата, затова и в четвъртък казах да заключат темата, понеже не ми отговарят на въпроса, а ми пишат съвсем встрани от темата(тъй наречения спам и после бам и си бан)


 
---------------------------
Потребител от: 20.12.06 | Всички уроци от zipopro | Всички скриптове от zipopro

Лъчезар Петров Лечев - 14 - Стара Загора - Уеб Програмист
Винчета, болчета гайкии...!
напиши eMail напиши лично съобщение виж профила на zipopro
темата е прекратена! 
 1 посетител чете тази тема (0 потребители и 1 гост)  
Активни потребители: ---
   




mytech.bg © 2004 - 2009 | Контакти | За реклама