str_replace

weightwatcher

Erfahrenes Mitglied
Ich will ein Script machen mit dem eine Variable in einer anderen Datei ändern kann. Es soll für meine offline function sein ....
Es soll nur der Wert der Variable $off = '0'; geändert werden und zwar in '1'.
Das aktiviert dann über eine If Funktion die Offline Funktion ...

habe mal folgendes probiert ... aber ich glaube ich habe die funktion falsch verstanden ...

PHP:
<?php
include ("config.php");
$off = str_replace("0)","1",$off);
?>


Die Variable die ich veränder will ist in der Datei config.php vermekrt und die Variable heißt $off...

Hoffe mir kann jemand helfen.
Danke im Voraus und MfG Dennis aka weighwatcher.
 
Zuletzt bearbeitet:
Fuer PHP brauchst Du entweder den entsprechenden Interpreter der das Script ausfuehrt oder einen Webserver.
Also mal eben so auf CD packen zum im Browser ansehen ist da nicht drin.

Das sei nur mal so am Rande erwaehnt.
 
he ? was ?

Ich habs natürliche auf meinem Linux Server mit Apache 1.33 und PHP4 mit Mysql laufen. Was hast du denn gedacht ? Das ichs mir auf CD pack und so irgendwie anguckt ... ?

Ne ehrlich ... blöd bin ich nit.... :nospam:
 
Weil Du was von offline erzaehlt hast hatte ich angenommen Du haettest ein solch lustige Idee.
Ich wollte Dir sicher nicht unterstellen, dass Du bloed bist. Aber ich kann ja auch nicht wissen wie viel Ahnung von PHP hast.
 
Sorry, war nit so gemeint .... Ich brauche das Script für mein CMS. Habe selber eines gecodet. Und jetzt will ich ins Admininterface einbauen, dass wenn man den Link klickt "Seite warten", dass er dann ind der config.php die Variable $off = 0 auf $off = 1 setzt, und somit dann in der config.php der status der Variable abgefragt wird. Wenn $off = 1 dann Wartungsmodus ... wenn 0 dann nromaler Modus. Das mit dem Wartungsmodus schon einwandfrei. Nur das ersetzten vom Adminmenü heraus nit ....

Also ich brauche jetzt ein Script, mit dem ich die $off = 0 in der config.php auf $off = 1 setzen kann.

Wäre sehr freundlich wenn mir jemand sagen könnte, warum das oben nit ....
MfG und Danke im Voraus Dennis aka weightwatcher
 
Probier mal das hier:
PHP:
$configfile=fopen("config.php","r");
$configuration=fread($configfile,filesize("config.php"));
fclose($configfile);
$configuration=str_replace("$off=".$offold,"$off=".$offnew,$configuration);
$configfile=fopen("config.php","w");
fwrite($configfile,$configuration);
fclose($configfile);

Vorher musst Du natuerlich noch die Variablen $offold und $offnew entsprechend setzen.
Also mit dem alten und neuen Wert von $off.
Weiterhin sollte in der Datei dem Beispiel zufolge $off=1; bzw. $off=0; stehen, ohne Leerzeichen.

Keine Gewaehr auf Funktion, hab's mir spontan aus dem Aermel geschuettelt und nicht getestet.
 
[phpf]str_replace[/phpf] ersetzt einfach nur einen bestimmten Text innerhalb einer Variable. Dadurch wird sie nicht in der Datei gespeichert.

Die Zeile in deinem Script könnte man auch einfach so abkürzen (aber nur speziell in deinem Fall):

PHP:
# statt
$off = str_replace("0","1",$off);
# folgendes:

$off = 1;

Das hätte den gleichen Effekt. ;)

Ich habe folgenden Vorschlag: Du nimmst eine Datei, nennen wir sie "off_on.dat". Und da steht entweder 0 oder 1 dran. Jetzt kannst du mit den verschiedenen Datei-Funktionen (s. SilentWarriors Link) arbeiten und die Datei öffnen, die Zahl auslesen, sie verwenden und die Datei bearbeiten. Und damit da noch ein Lerneffekt besteht, finde ich, du solltest dir die Datei-Funktionen mal anschauen und versuchen, selbst dieses Script zu machen.

Denn für das Ändern der Zahl brauchst du nur 5 Schritte:

1. Datei löschen
2. Datei anlegen (-> Datei ist leer)
3. Datei öffnen
4. In Datei schreiben (1 oder 0)
5. Datei schließen

Für Schritt 3-5 gibt es seit PHP 5 übrigens die Funktion [phpf]file_put_contents[/phpf].
 
Sebastian Wramba hat gesagt.:
[phpf]str_replace[/phpf] ersetzt einfach nur einen bestimmten Text innerhalb einer Variable. Dadurch wird sie nicht in der Datei gespeichert.

Die Zeile in deinem Script könnte man auch einfach so abkürzen (aber nur speziell in deinem Fall):

PHP:
# statt
$off = str_replace("0","1",$off);
# folgendes:

$off = 1;

Das hätte den gleichen Effekt. ;)
Vorausgesetzt, dass ist die einzige 0 im Script. ;)
 
Zurück