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ó!
touch (dirname(__FILE__) . "settings.php"); 
  $iras=('$install=1;'."\n".'$title='$title';'."\n".'$head='$head';'."\n".'$almenu=1;'."\n".
  '$mysql_server='$hos't;'."\n".'$mysql_user='$felh';'."\n".'$mysql_pass='$pass';'."\n".
  '$mysql_db='$db';'."\n".'$adminpass='$pass_secret';'."\n".'$admin='$admin';'."\n".
  '$version='$newversion';'."\n".'$mail='$mail';'."\n");
  $fp=@fopen(dirname(__FILE__) . 'settings.php', 'w');
  fwrite ($fp, "<?php\n" . $iras . "?" . ">");
  fclose ($fp);
  echo'kész';
ennek ez lesz az eredménye:

<?php
 $install=1;
$title=$title;
$head=$head;
$almenu=1;
$mysql_server=$host;
$mysql_user=$felh;
$mysql_pass=$pass;
$mysql_db=$db;
$adminpass=$pass_secret;
$admin=$admin;
$version=$newversion;
$mail=$mail;
?>
 
én azt szeretném hogy így nézzen ki:
<?php
 $install=1;
$title=beírt adat;
//ennek a mintájára az egész előbb mutatott rész
?> 
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.

<?php
// Ide fogunk menteni.
$path = dirname(__FILE__) . '/settings.php';

// Megnyitjuk a fájlt írásra.
if ($fp = fopen($path, 'w')) {
  // Ezeket a változókat fogjuk kimenteni.
  $variables = array(
    'install',
    'title',
    'head',
    'almenu',
    'mysql_server',
    'mysql_user',
    'mysql_pass',
    'mysql_db',
    'adminpass',
    'admin',
    'version',
    'mail',
  );
  $iras = array();

  // Végigmegyünk a változóneveken, és belerakjuk a $iras tömbbe
  foreach ($variables as $variable) {
    // Kivesszük a változó értékét.
    $var = addcslashes(isset($$variable) ? $$variable : '', "\\\'\n\r");
    // Szépen megformázzuk
    $iras[] = "\$$variable  = '$var';";
  }

  // Kiírjuk fájlba, és lezárjuk a fájlt.
  fwrite($fp, "<?php\n" . implode("\n", $iras) . "\n?>");
  fclose($fp);

  // Készen is vagyunk.
  echo "$path kész";
}
else {
  // Hiba történt.
  echo "$path nem írható";
}

?>
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.)

$settings = array(
'DBSERVER' => 'localhost',
'DBNAME'   => 'adatbazis',
'VERSION'  => '0.99b',
);
$fp=@fopen(dirname(__FILE__) . 'settings.php', 'w');  
fwrite ($fp, "<?php\n" . var_export($settings);
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)