ugrás a tartalomhoz

Változók filba írása php segítségével.

Tailor993 · 2010. Ápr. 30. (P), 14.28
Sziasztok megint van egy kis problémám egy telepíthető weblapot akarok létrehozni és amikor a hozzá férési adatokat fileba akarom íratni akkor nem az történik amit szertnék. Kérlek segítsetek itt a file írásának utasítása ami egy php fileban található!
  1. touch (dirname(__FILE__) . "settings.php");   
  2.   $iras=('$install=1;'."\n".'$title='$title';'."\n".'$head='$head';'."\n".'$almenu=1;'."\n".  
  3.   '$mysql_server='$hos't;'."\n".'$mysql_user='$felh';'."\n".'$mysql_pass='$pass';'."\n".  
  4.   '$mysql_db='$db';'."\n".'$adminpass='$pass_secret';'."\n".'$admin='$admin';'."\n".  
  5.   '$version='$newversion';'."\n".'$mail='$mail';'."\n");  
  6.   $fp=@fopen(dirname(__FILE__) . 'settings.php''w');  
  7.   fwrite ($fp"<?php\n" . $iras . "?" . ">");  
  8.   fclose ($fp);  
  9.   echo'kész';  
ennek ez lesz az eredménye:
  1. <?php  
  2.  $install=1;  
  3. $title=$title;  
  4. $head=$head;  
  5. $almenu=1;  
  6. $mysql_server=$host;  
  7. $mysql_user=$felh;  
  8. $mysql_pass=$pass;  
  9. $mysql_db=$db;  
  10. $adminpass=$pass_secret;  
  11. $admin=$admin;  
  12. $version=$newversion;  
  13. $mail=$mail;  
  14. ?>  
  15.    
én azt szeretném hogy így nézzen ki:
  1. <?php  
  2.  $install=1;  
  3. $title=beírt adat;  
  4. //ennek a mintájára az egész előbb mutatott rész  
  5. ?>   
Válaszaitokat előre is köszönöm ha kell még valami ahoz hogy segíteni tudjatok akkor szóljatok. És még egyszer köszi mindent. :D
 
1

Idézőjelek

Poetro · 2010. Ápr. 30. (P), 15.27
Ajánlom elolvasni a PHP String kezeléssel kapcsolatos leírását.
  1. <?php  
  2. // Ide fogunk menteni.  
  3. $path = dirname(__FILE__) . '/settings.php';  
  4.   
  5. // Megnyitjuk a fájlt írásra.  
  6. if ($fp = fopen($path'w')) {  
  7.   // Ezeket a változókat fogjuk kimenteni.  
  8.   $variables = array(  
  9.     'install',  
  10.     'title',  
  11.     'head',  
  12.     'almenu',  
  13.     'mysql_server',  
  14.     'mysql_user',  
  15.     'mysql_pass',  
  16.     'mysql_db',  
  17.     'adminpass',  
  18.     'admin',  
  19.     'version',  
  20.     'mail',  
  21.   );  
  22.   $iras = array();  
  23.   
  24.   // Végigmegyünk a változóneveken, és belerakjuk a $iras tömbbe  
  25.   foreach ($variables as $variable) {  
  26.     // Kivesszük a változó értékét.  
  27.     $var = addcslashes(isset($$variable) ? $$variable : ''"\\\'\n\r");  
  28.     // Szépen megformázzuk  
  29.     $iras[] = "\$$variable  = '$var';";  
  30.   }  
  31.   
  32.   // Kiírjuk fájlba, és lezárjuk a fájlt.  
  33.   fwrite($fp"<?php\n" . implode("\n"$iras) . "\n?>");  
  34.   fclose($fp);  
  35.   
  36.   // Készen is vagyunk.  
  37.   echo "$path kész";  
  38. }  
  39. else {  
  40.   // Hiba történt.  
  41.   echo "$path nem írható";  
  42. }  
  43.   
  44. ?>  
2

var_export?

TeeCee · 2010. Ápr. 30. (P), 15.29
Szia!

A var_export() függvénnyel egyszerűen ki tudsz exportálni változóértéket.
Én egy tömbbe tárolnám a változókat: $settings, vagy $GLOBALS['settings'] néven. A tömbös megoldással nagyon egyszerű lenne kiírni a beállításokat a fájlba:
(A záró PHP-tag nem kötelező, így elhagyjuk.)
  1. $settings = array(  
  2. 'DBSERVER' => 'localhost',  
  3. 'DBNAME'   => 'adatbazis',  
  4. 'VERSION'  => '0.99b',  
  5. );  
  6. $fp=@fopen(dirname(__FILE__) . 'settings.php''w');    
  7. fwrite ($fp"<?php\n" . var_export($settings);  
  8. fclose ($fp);  
Így egyáltalán nem kell azzal foglalkoznod, hogy a stringet escape-lve legyenek, amit mondjuk látom egyébként sem tettél, pedig okozhatna meglepetést! ;-)
3

Escape

Poetro · 2010. Ápr. 30. (P), 15.35
Igen, nekem is csak első beküldés után ugrott be, de azután javítottam is. Persze ettől még lehet valami nem lett escapelve, ami fontos lehet.
4

Köszi

Tailor993 · 2010. Ápr. 30. (P), 19.27
Köszönöm a segítséget mostmár működik ezer hála.
5

Szerializáció, vagy config fájl

Protezis · 2010. Május. 1. (Szo), 09.33
http://hu.php.net/manual/en/function.serialize.php, vagy ha kézzel is szerkeszthetőnek kell lennie, használj valamilyen config fájlt. Ini, XML, stb. Nézd meg a Zend_Config-ot a Zend Framework-ben.
6

serialize()

TeeCee · 2010. Május. 2. (V), 16.10
Mivel jobb a serialize() az előbbinél?
Én eddig szinte csak hátrányát láttam, nevezetesen, ha valamit keresni, vagy módosítani kellett benne, akkor nem volt egyszerű.
A nagyobb fájlméretet kivéve a var_dump() szerintem jobb megoldás volt, ráadásul sebességben is gyorsabb - mondjuk ezt még 4-es PHP-nél teszteltem.
Az INI, XML szintén: csak akkor jó, ha teljesen hozzá-nem-értő ember akarja konfigolni a rendszert, egyébként csak a beállító-fájl használatát bonyolítja a rendszer szemszögéből.

Ha rosszul látom, akkor homályosítson föl valaki, de eddig nekem ez volt a tapasztalatom. (Legalábbis a fájl-szinten történő beállításokat tekintve. A serialize() jó pl. akkor ha adatbázisban tárolsz, mivel akkor egy var_export()-kimenetet eval()-ozni kellene ami biztonsági problémákat vet föl, a serialize() meg egyszerűen lefut ugye a tárolt szövegen)