Archivlink: javarea.de Forum > PHP, MySQL & CGI > Probleme mit fwrite
Vollständigen Link anzeigen: javarea.de Forum > PHP, MySQL & CGI > Probleme mit fwrite
Pages: [1]
2
... nächste »
... Letzte »
| geschrieben von wwwChaOs am 08.07.2007 - 15:28 |
ich hab voll probleme mit $Variable, ' und "
bevor ich in zeile 223 " genommen hab - also ' ging in auch 223 net... aber bei 225 funzt beides net...
Da soll mein Source einen neuen Source schreiben:
221: fwrite($xUpload, '<?php');
222: fwrite($xUpload, "\r\n");
223: fwrite($xUpload, "$target = \"files/\";");
224: fwrite($xUpload, "\r\n");
225: fwrite($xUpload, '$target2 = $target . basename( $_FILES[\'uploaded\'][\'name\']);'); << in dieser zeile is irgendein Fehler sagt mir der debugger: "
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in D:\HDD\eintragen.php on line 225"
|
| geschrieben von René am 08.07.2007 - 16:35 |
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
<?php
if ($xUpload = fopen('./test2.php', 'wb'))
{
fwrite($xUpload, '<?php');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '$target = "files/";');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '$target2 = $target . basename($_FILES[\'uploaded\'][\'name\']);');
fclose($xUpload);
}
?>
|
das steht dann in der test2.php;
| PHP-Quelltext | 1:
2:
3:
4:
5:
|
<?php
$target = "files/";
$target2 = $target . basename($_FILES['uploaded']['name']);
|
|
| geschrieben von wwwChaOs am 10.07.2007 - 21:37 |
so hab jetzt das mal durchprobiert...
funzt leider net :'(
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
|
<?
if ($xUpload = fopen ('IZO/$username/Upload$passwort.php','wb'))
{
fwrite($xUpload, '<fieldset style="border-color: #AA0000"><legend><font color="#000000" face="Verdana">Upload</font></legend>');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '<form enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" method="POST">');
fwrite($xUpload, "\r\n");
fwrite($xUpload, 'Please choose a file:');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '<input name="uploaded" type="file" style="border:1px solid #FFFFFF; font-size: 10px; font-family: Verdana; font-weight: bold; background-color: #000000; color: #FFFFFF" size="20"><br>');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '<p align="left"><input type="submit" value="Upload" style="border:1px solid #FFFFFF; font-size: 10px; font-family: Verdana; font-weight: bold; background-color: #000000; color: #CCCCCC"></p>');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '</form>');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '_');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '<?php');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '$target = "files/";');
fwrite($xUpload, "\r\n");
#224:
fwrite($xUpload, '$target2 = $target . basename($_FILES[\'uploaded\'][\'name\']);');
...
fclose($xUpload);
}?>
|
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in D:\HDD\eintragen.php on line 224
PS: ich könnte auch die ganze Datei mal hochladen, wenns sehr not tut... eher ungern, aber wenn es zum ziel führt... |
| geschrieben von René am 11.07.2007 - 07:37 |
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
|
<?php
if ($xUpload = fopen ('IZO/' . $username . '/Upload' . $passwort . '.php','wb'))
{
fwrite($xUpload, '<fieldset style="border-color: #a00"><legend><font color="#000000" face="Verdana">Upload</font></legend>');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '<form action="<' . '?= $_SERVER[\'PHP_SELF\']; ?' . '>" method="post" enctype="multipart/form-data">');
fwrite($xUpload, "\r\n");
fwrite($xUpload, 'Please choose a file:');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '<input name="uploaded" type="file" style="border:1px solid #fff; font-size: 10px; font-family: Verdana; font-weight: bold; background-color: #000; color: #fff" size="20">');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '<p align="left"><input type="submit" value="Upload" style="border:1px solid #fff; font-size: 10px; font-family: Verdana; font-weight: bold; background-color: #000; color: #ccc"></p>');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '</form>');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '_');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '<' . '?php');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '$target = "files/";');
fwrite($xUpload, "\r\n");
fwrite($xUpload, '$target2 = $target . basename($_FILES[\'uploaded\'][\'name\']);');
fclose($xUpload);
}
?>
|
das gibt folgendes aus:
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
|
<fieldset style="border-color: #a00"><legend><font color="#000000" face="Verdana">Upload</font></legend>
<form action="<?= $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
Please choose a file:
<input name="uploaded" type="file" style="border:1px solid #fff; font-size: 10px; font-family: Verdana; font-weight: bold; background-color: #000; color: #fff" size="20">
<p align="left"><input type="submit" value="Upload" style="border:1px solid #fff; font-size: 10px; font-family: Verdana; font-weight: bold; background-color: #000; color: #ccc"></p>
</form>
_
<?php
$target = "files/";
$target2 = $target . basename($_FILES['uploaded']['name']);
|
|
| geschrieben von wwwChaOs am 18.07.2007 - 22:18 |
Parse error: syntax error, unexpected $end in D:\HDD\eintragen.php on line 353
(die datei is nur 352 zeichen lang...) da such ich mich dumm und dämlich nach ner klammer die fehlt schon seit einer woche und ich find nix
ich such verzweifelt schon nach nem debugger, der mir genauer sagt, in welche zeile das problem liegt ... einen hab ich gefunden, der einen farbewechsel anzeigt... bin mir aber net sicher, was was zu heißen hat und wie überhaupt, sorry 
screenshot && file angehängt...
|
| geschrieben von wwwChaOs am 18.07.2007 - 22:20 |
|
| geschrieben von Klaush am 19.07.2007 - 08:22 |
| Zitat | | | Original geschrieben von wwwChaOs am 18.07.2007 - 22:18
Parse error: syntax error, unexpected $end in D:\HDD\eintragen.php on line 353
(die datei is nur 352 zeichen lang...) da such ich mich dumm und dämlich nach ner klammer die fehlt schon seit einer woche und ich find nix
ich such verzweifelt schon nach nem debugger, der mir genauer sagt, in welche zeile das problem liegt ...
|
Die Zeile hast du ja --> 353
Der Fehler liegt an deiner doppel ELSE Anwesiung, ganz unten.
"nexpected $end"
du kannst nicht
if{
....
}else{
.....
}else{
....
}
schreiben, wenn dann musst du ein elseif Anweisung machen:
if{
....
}elseif{
.....
}else{
....
}
Der Fehler liegt also am doppelten ELSE
|
| geschrieben von wwwChaOs am 19.07.2007 - 11:13 |
schon möglich, ich bin in php net so der pro, aber in c++ isses ja auch so dass man erst if, dann elseif(beliebig oft), und dann else nimmt
aber in meinem source wird 2x if aufgemacht
quasi
if{
.......Bedingung 1
if{
.......Bedindigung 2
}
else{Ansonsten 2}
}
else{Ansonsten 1}
weiß nich so recht, geht das nich?
in c++ ging das auch, darum dacht ich hier gehen auch if-in-if-bedigungen =/
mit elseif geht's auch nicht 
aber trotzdem danke 
|
| geschrieben von Matneu am 19.07.2007 - 11:25 |
Also bei so einem Code wundert es mich nicht, dass Du selbst nicht mehr durchblickst, wo welche Klammer geschlossen wird und wo nicht.
Ich würde Dir dringend raten, Deinen Code vernünftig zu schreiben, dann passiert zumindest so ein Fehler nicht mehr.
Kleines Beispiel?
Statt
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
|
<?
if ($password == $password2)
{
if (in_array($username,$user_vorhanden))
{
}
}
else
{
if ($xUpload = fopen ('IZO/' . $username . '/Upload' . $passwort . '.php','a'))
{
}
}
else
{
}
?>
|
schreibt man
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
<?
if ($password == $password2) {
if (in_array($username,$user_vorhanden)) {
}
} else {
if ($xUpload = fopen ('IZO/' . $username . '/Upload' . $passwort . '.php','a')) {
}
} else {
}
?>
|
und sofort sieht man, wo was nicht passt bzw. was zusammengehört.
Und die Einrückungen macht man nicht mit Leerzeichen sondern mit Tabs. Eine Ebene = ein Tab.
Ein guter PHP-Editor kann übrigens die Formatierung auch von alleine übernehmen. Unter Eclipse z. B. reicht es, Strg+Shift+F zu drücken und Dein Code wird - zumindest meistens - formatiert. Allerdings klappt das mit Deinem Code nur zur Hälfte, irgendwann gibt Eclipse einfach auf.
So far...
Matthias |
| geschrieben von Matneu am 19.07.2007 - 11:33 |
| Zitat | | | Original geschrieben von wwwChaOs am 19.07.2007 - 11:13
schon möglich, ich bin in php net so der pro, aber in c++ isses ja auch so dass man erst if, dann elseif(beliebig oft), und dann else nimmt |
Du solltest aber auf die Verschachtelung achten:
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
|
<?
if () {
.......Bedingung 1
if () {
.......Bedindigung 2
} else {
Ansonsten 2
} else {
Ansonsten 1
}
?>
|
| Zitat | | | in c++ ging das auch, darum dacht ich hier gehen auch if-in-if-bedigungen =/ |
In C* geht das so (mit falscher Verschachtelung) sicherlich auch nicht!
So far...
Matthias
P.S.: Sorry für Doppelpost, aber hier haben sich die Antwort und mein Beitrag überschnitten. |
| geschrieben von Klaush am 19.07.2007 - 12:24 |
Das ist auch ok:
| Zitat | | | Original geschrieben von wwwChaOs am 19.07.2007 - 11:13
aber in meinem source wird 2x if aufgemacht
quasi
if{
.......Bedingung 1
if{
.......Bedindigung 2
}
else{Ansonsten 2}
}
else{Ansonsten 1}
weiß nich so recht, geht das nich?
in c++ ging das auch, darum dacht ich hier gehen auch if-in-if-bedigungen =/
mit elseif geht's auch nicht 
|
Diese Struktur ist schlecht lesbar und falsch, da du 2 Else auf die obere if benutzt:
| Zitat | | |
schreibt man
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
<?
if ($password == $password2) {
if (in_array($username,$user_vorhanden)) {
}
} else {
if ($xUpload = fopen ('IZO/' . $username . '/Upload' . $passwort . '.php','a')) {
}
} else {
}
?>
|
|
In deiner angehängten Datei wie auch im obigen Code ist deine Bedingung falsch geschrieben. Wenn man den code sauber einrücken würde, sieht man sofort wo eine Blockklammer hingehört. Und jetzt schau dir den Code genau an und folge den Klammern dann findest du einen Fehler in der If Else Struktur.
Hier dein Sourcecode deren Inhalte ich verkürzt, die if-Struktur jedoch gelassen habe:
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
|
<?
if ($password == $password2)
{
$user_vorhanden = array();
$passwort = md5($password);
$userdatei = fopen ("useIT.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdata = explode("|", $zeile);
array_push ($user_vorhanden,$userdata[0]);
}
fclose($userdatei);
if (in_array($username,$user_vorhanden))
{
echo "........."
}
}
else
{
$userdatei = fopen ("useIT.txt","a");
fwrite($userdatei, $username);
.........
.........
if ($xUpload = fopen ('IZO/' . $username . '/Upload' . $passwort . '.php','a'))
{
fwrite($xUpload, '');
........
........
}
$xDatalist = fopen ("IZO/$username/datalist$passwort.php","a");
fwrite($xDatalist, '<html>');
.........
.........
}
else
{
echo ".........";
}
?>
|
Auf Zeile 39-42 solltest du ein Auge werfen |
| geschrieben von wwwChaOs am 19.07.2007 - 12:49 |
@matneu
1. Ja okay der quelltext is chaotisch...
darum hab ich ihn mal schnell nechgebessert und als anhang nochmal dahin
2. Bei der verschachtelung hab ich was vergessen ja, aber es geht trotzdem iwie net
@klausch
danke, das hatte ich noch gesucht... diese eine if-anweisung war da iwie reingrutscht - keine ahnung
jetzt hab ich die entfernt und es geht noch nicht ._. |
| geschrieben von Klaush am 19.07.2007 - 13:06 |
Dein Nickname passt dann aber wieder ... *LOL*
okay, ich dachte du kommst selbst drauf, dann werde ich mal tief in meine Seele schauen.
Kommentare werden in PHP üblich so geschrieben:
für ein Zeile reichen 2 Slashes
| PHP-Quelltext | 1:
2:
3:
|
<?
// mein Kommentar
?>
|
bei mehreren Zeilen, kannst du den Kommentar einschließen
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
|
<?
/*
mein Kommentar
mein Kommentar
*/
?>
|
Deiner sieht so aus:
| PHP-Quelltext | 1:
2:
3:
|
<?
#int mkdir ( string pathname [, int mode] )
?>
|
Dann hast du ESCAPE Fehler im Code:
Such nach diesen Zeilen und ändere es ab
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
|
#<!--UnderC-->fwrite($edit, '<? include ("../upload.php?user=upload'.$passwort.'")?>');
$xUpload = fopen ('IZO/' . $username . '/Upload' . $passwort . '.php','a'))
fwrite($xUpload, "if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target2))");
fwrite($xUpload, "echo \"The file \". basename( $_FILES['uploadedfile']['name']). \" has been uploaded ;");
fwrite($xUpload, "[<a href="index.php" target=\"nickpage\">Back to Nickpage</a>]");
|
und der Else-Zweig ist noch immer vorhanden und führt ins Error T_ELSE
| PHP-Quelltext | 1:
2:
3:
4:
5:
|
<?
else{
echo "<font color=FFFFFF face=Verdana size=2>Your passwords are not identical.<br> <a href=\"eintragen.html\">Try again...</a> </font>";
}
?>
|
|
| geschrieben von Matneu am 19.07.2007 - 13:50 |
| Zitat | | | Original geschrieben von Klaush am 19.07.2007 - 13:06
Kommentare werden in PHP üblich so geschrieben: |
Nö, nicht unbedingt, das geht auch mit einer Raute
| Zitat | | | Dann hast du ESCAPE Fehler im Code: |
Das ist kein Escape-Fehler, schliesslich funktioniert ein | PHP-Quelltext | 1:
2:
3:
|
echo('<?php echo "foo"; ?>');
|
problemlos. Sobald man diese Zeile allerdings auskommentiert (wie auch immer) wird das "?>" als Beendigung vom PHP-Bereich angesehen. Eine Zeilenübergreifende Auskommentierung per /* [..] */ klappt allerdings.
So far...
Matthias |
| geschrieben von Klaush am 19.07.2007 - 15:31 |
| Zitat | | | Original geschrieben von Matneu am 19.07.2007 - 13:50
| Zitat | | | Original geschrieben von Klaush am 19.07.2007 - 13:06
Kommentare werden in PHP üblich so geschrieben: |
Nö, nicht unbedingt, das geht auch mit einer Raute
|
Klar geht das, habe nicht gesagt das es nicht geht, es ist aber kein üblicher PHP Kommentar und kommt eher aus der Shell Rubrik und so kenne ich das auch, funktionieren tut's 
| Zitat | | | Original geschrieben von Matneu am 19.07.2007 - 13:50
| Zitat | | | Dann hast du ESCAPE Fehler im Code: |
Das ist kein Escape-Fehler, schliesslich funktioniert ein | PHP-Quelltext | 1:
2:
3:
|
echo('<?php echo "foo"; ?>');
|
problemlos. Sobald man diese Zeile allerdings auskommentiert (wie auch immer) wird das "?>" als Beendigung vom PHP-Bereich angesehen. Eine Zeilenübergreifende Auskommentierung per /* [..] */ klappt allerdings.
|
Och Mat, musst du immer alles os genau nehmen? *gg*. Der Ordentlichkeit halber hast du natürlich Recht, ich war halt faul und wollte es nicht auseinander nehmen und habe es eben unter der großen FAULEN Rubrik ESCAPED abgehakt.
|
|