wo liegt der fehler? #2

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/wo_liegt_der_fehler_2_39117/page_1 - zur Vollversion wechseln!


Ezekiel schrieb am 25.06.2002 um 22:55

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 schrieb am 25.06.2002 um 22:58

huch, ich kann gar keine Threads closen.

Und von PHP hab ich auch keine Ahnung. :p


Philipp schrieb am 25.06.2002 um 22:58

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 schrieb am 25.06.2002 um 22:59

danke


schrieb am 25.06.2002 um 23:40

ä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 schrieb am 25.06.2002 um 23:58

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


schrieb am 26.06.2002 um 00:15

Was willst du mit addslashes im aktuellen Fall? :confused:


Vir@s schrieb am 26.06.2002 um 10:35

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!


schrieb am 26.06.2002 um 10:51

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 schrieb am 26.06.2002 um 11:07

hmm, nagut dachte immer addslashes macht auch slashes vor den $ zeichen :/

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


Philipp schrieb am 26.06.2002 um 11:14

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


schrieb am 26.06.2002 um 13:06

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 schrieb am 26.06.2002 um 13:22

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 schrieb am 26.06.2002 um 13:24

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 schrieb am 26.06.2002 um 14:59

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.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025