"We are back" « oc.at

wo liegt der fehler? #2

Ezekiel 25.06.2002 - 22:55 1341 21
Posts

Ezekiel

OC Addicted
Avatar
Registered: Jun 2001
Location: na
Posts: 3329
sorry that, aber das haettest mir auch sagen können ohne den thread zu closen ...

Code: PHP
$fp=fopen("threads/thread_$title2.php",'w');
       fputs($fp,"<?php $fp=fopen('thread_$titel2.txt','r'); fpassthru($fp); ?>");
       fclose($fp);

wenn ich die datei so am server erstelle werden alle "$fp"'s durch "ressource id#3"'s ersetzt... kann man das ändern ???

mfg+thx

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11342
huch, ich kann gar keine Threads closen.

Und von PHP hab ich auch keine Ahnung. :p

Philipp

Here to stay
Registered: Jul 2001
Location: Wien
Posts: 1970
Die Variable $fp wird schon am Anfang reserviert.

Am besten du änderst:
<?php $fp=fopen('thread_$titel2.txt','r'); fpassthru($fp); ?>

in:
<?php $fp2=fopen('thread_$titel2.txt','r'); fpassthru($fp2); ?>

Ezekiel

OC Addicted
Avatar
Registered: Jun 2001
Location: na
Posts: 3329
danke

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
ändert nix :rolleyes:
prob ist: $var wird in strings natürlich geparsed.

lösung: entweder verwendest 'lame' statt "lame"
oder du machst ein \$fp

also:
fputs($fp,"<?php \$fp=fopen('thread_\$titel2.txt','r'); fpassthru(\$fp); ?>");

$titel2 auch je nachdem obst es erst im ausgabefile so drin haben willst.

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Schon mal was von addslashes(); gehört?

Is ne wirklich tolle funktion die genau solche Probleme umgeht, RTFM!

Mfg, Vir@s

http://www.php.net/manual/en/function.addslashes.php

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
Was willst du mit addslashes im aktuellen Fall? :confused:

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Code: PHP
fputs($fp,addslashes("<?php $fp=fopen('thread_$titel2.txt','r'); fpassthru($fp); ?>"));

:rolleyes: :rolleyes: :rolleyes:

Damit ist des problem vom Variabel schreiben gelöst, und du bekommst wirklich den Text der dort steht, ohne des du alle slashes händisch machen must!

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
liefert <?php =fopen(\\'thread_.txt\\',\\'r\\'); fpassthru(); ?>
:rolleyes:

addslashes brauchst du wenn du Anführunszeichen schon in einem String drinnenhast (z.b. bei Form input) - nur sicherlich nicht um einen string zu konstruieren ;)

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
hmm, nagut dachte immer addslashes macht auch slashes vor den $ zeichen :/

naja anyway, ich sag bessa nix mehr....

Philipp

Here to stay
Registered: Jul 2001
Location: Wien
Posts: 1970
Das kommt davon wenn ich nach einen etwas stressigen Tag versuche PHP Scripte zu debuggen :o

Zwei Anmerkungen:
1) Ich würde $title2 vorfiltern da es je nach verwendeter Betriebssystem/Konfiguration zu einen Sicherheitsproblem kommen kann.
2) Die Variablen sollten außerdem mit $_GET initialisiert werden

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
Zitat von Vir@s
hmm, nagut dachte immer addslashes macht auch slashes vor den $ zeichen :/

naja anyway, ich sag bessa nix mehr....

würde es das machen würd ich den PHP-Codern ordentlich in den ***** treten weil das wär gegen jedes Konzept ;)

sagen kannst was, nur RTFM then POST :p :D

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Zitat von .deRElict.
sagen kannst was, nur RTFM then POST :p :D

Hab ich eh - war nur ein beschissener denkfehler von mir drinnen :)

Hab nämlich vor kurzem ne template gmacht die ich vorher durch addslashes gschickt hab und nacher mit nem eval alle vars ersetzt!

Weiß auch ned wie ich drauf kommen bin des die $ durch \$ ersetzt werden => Wie sollte eval sonst ersetzen? :)

Mfg, Vir@s

Ezekiel

OC Addicted
Avatar
Registered: Jun 2001
Location: na
Posts: 3329
Zitat von Philipp
2) Die Variablen sollten außerdem mit $_GET initialisiert werden
gut das du das gesagt hast, da kommt mir nämlich gleich meine nächste frage :D
was bringt das, warum sollte mans machen ?

Philipp

Here to stay
Registered: Jul 2001
Location: Wien
Posts: 1970
Ab PHP 4.2.0 werden aus Sicherheitsgründen standardmäßig keine Global Variablen registriert. Es sei den diese Funktion wird wieder in der PHP.INI aktiviert.

Beispiel:
Code: PHP
 <?php echo $test; ?>

Früher konnte man dieses Script z.B. mit ?test=hallo aufrufen damit "hallo" auf dem Bildschirm erscheint. Unter 4.2.0 müsste das Script folgendermaßen aussehen:

Code: PHP
<?php echo $_GET["test"]; ?>

Da $_GET, $_POST usw. erst ab PHP 4.1.0 unterstützt werden, wäre natürlich das optimaler:

Code: PHP
<?php
if (phpversion() >= "4.1.0") { 
	$test = $_GET["test"];
 }

echo $test;
?>

Hier wird überprüft ob PHP 4.1.0 oder höher installiert ist um ggf. die Variable $test über $_GET zu initialisieren. Diese Variante läuft sowohl auf älteren PHP Versionen <4.1.0 als auch auf höheren.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz