XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   (X)HTML (http://xhtmlforum.de/forumdisplay.php?f=72)
-   -   php script funktioniert nicht... Hilfe... (http://xhtmlforum.de/showthread.php?t=61552)

Argon007 25.06.2010 12:29

php script funktioniert nicht... Hilfe...
 
Hallo forum,


ich möchte ein verzeichnis anlegen in dem später bilder gespeichert werden.
ich übergebe dem skript eine variable w1, die auch richtig beim ersten mal ausgegeben wird. Wenn ich aber die variable in if($_POST['senden']){...}
anzeigen möchte bzw. den file nahc $upload_dir kopieren will geht's nicht!!! was mache ich falsche??!! DANKE!


PHP-Code:

<form enctype="multipart/form-data" action="<? $_SERVER['PHP_SELF'?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1048576">
<input type="file" name="toProcess">
<input type="submit" name="senden" value="Upload">
</form>
<?php
$upload_dir_root 
"/usr/export/www/vhosts/xxxx/hosting/xxxx/upload/";
$upload=$upload_dir_root.$w1;
echo 
$upload//geht, der pfad wird richtig angezeigt
mkdir($upload_dir,0770); //geht auch, wird angelegt


if($_POST['senden']){


echo 
$w1//GEHT NICHT! WARUM???
$upload_dir=$upload_dir_root.$w1;
move_uploaded_file($_FILES['toProcess']['tmp_name'], $upload_dir.$_FILES['toProcess']['name']);
}
?>


derHund 25.06.2010 13:15

$w1 ist nach dem POST-Request nicht (mehr) bekannt, du musst dem Server schon mitteilen, welchen Wert die Variable haben soll.

Argon007 25.06.2010 13:51

Zitat:

Zitat von derHund (Beitrag 468918)
$w1 ist nach dem POST-Request nicht (mehr) bekannt, du musst dem Server schon mitteilen, welchen Wert die Variable haben soll.

gibt's eine möglichkeit die variable an Post-request zu übergeben? w1 ist dynamisch d.h. abhägig von der eingabe des users.

chorn 25.06.2010 14:38

SELFHTML: Navigationshilfen / Kurzreferenz: HTML > Versteckte
Elemente

Walter IT-Services 25.06.2010 17:22

Hi!

Versteckte Elemente sind aber veränderbar. Würde ich eher als unsicher erachten. Eine Session, DB/Datei als Zwischenspeicher wären auch eine Möglichkeit.

Noch ein Tip:
<? $_SERVER['PHP_SELF'] ?>
Da fehlt das echo. Wenn dann: <?=$_SERVER['PHP_SELF']?> oder <? echo $_SERVER['PHP_SELF'] ?>
Abgesehen davon gilt dies auch als unsicher, da man wohl die Variable manipulieren kann. Ich empfehle, den Namen des Scripts einfach direkt einzutragen.


LG
Micha

Argon007 26.06.2010 10:12

Zitat:

Zitat von Walter IT-Services (Beitrag 468937)
Hi!

Versteckte Elemente sind aber veränderbar. Würde ich eher als unsicher erachten. Eine Session, DB/Datei als Zwischenspeicher wären auch eine Möglichkeit.

Noch ein Tip:
<? $_SERVER['PHP_SELF'] ?>
Da fehlt das echo. Wenn dann: <?=$_SERVER['PHP_SELF']?> oder <? echo $_SERVER['PHP_SELF'] ?>
Abgesehen davon gilt dies auch als unsicher, da man wohl die Variable manipulieren kann. Ich empfehle, den Namen des Scripts einfach direkt einzutragen.


LG
Micha

Hallo alle zusammen!
zu nächst an alle ein mercie, die hier tipps geben!!! Gibt mir die hoffnung das der skript irgendwan doch noch läuft... :lol: :lol:
Leider funtioniert der skript immer noch nicht. Ich werde zu nächst versuchen zu erklären was ich überhaupt erreichen möchte.
Die User laden die seite albumNameEingeben.php hier kann man den namen des Verzeichnises eingeben und eine kurze beschreibung. Sobald man jetzt den button "Bild speichern" betätig wird das Verzeichnis richtig unter "/usr/export/www/vhosts/xxxx/hosting/xxxx/upload" angelegt.
albumNameEingeben.php
PHP-Code:

<html>
<
body>
Hier musst du was eingeben.<br>
<
form action "albumVerzeichnisErstellen.php" method "post">
    
Verzeichnis: <input  name "w1"/><p>
    
kurze Beschreibung: <input name "w2"><p>
    <
input type "submit" value="Bild speichern">
    <
input type "reset">
</
form>
</
body>
</
html

Jetzt kurz noch was zu VerzeichnisErstellen.php. Hier wird das Verzeichnis mit dem vorhin eingegeben namen ($w1) auf dem server erstellt. Außerdem hat dieses skript noch eine form um fotos in den erstellten verzeichnis hoch zuladen. Dieser skript funktioniert nur bedingt, das verzeichnis wird zwar angelegt aber die fotos werden nur unter "/usr/export/www/vhosts/xxxx/hosting/xxxx/upload" obwohl das ziel verzeichnis exestiert. Wie kann ich erreichen das die bilder ins ziel verzeichnis geladen werden. Sorry bin ein newbie.
albumVerzeichnisErstellen.php
PHP-Code:

<form enctype="multipart/form-data" action="<? $_SERVER['PHP_SELF'?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1048576">
<input type="file" name="toProcess">
<input type="submit" name="senden" value="Upload">
</form>
<?php
$upload_dir_root 
"/usr/export/www/vhosts/xxxx/hosting/xxxx/upload/";
$upload=$upload_dir_root.$w1;



if(
$_POST['senden']){
echo 
$w1;
echo 
$_POST["w1"];

//echo $w1; //GEHT NICHT! WARUM???
$upload_dir=$upload_dir_root.$w1;
move_uploaded_file($_FILES['toProcess']['tmp_name'], $upload_dir.$_FILES['toProcess']['name']);
}
?>

DANKE!

Walter IT-Services 26.06.2010 15:00

Zitat:

Zitat von Argon007 (Beitrag 468966)
Sorry bin ein newbie.

Wir haben alle mal klein angefangen ;)

Wegen dem Verzeichnisname:
Du speicherst doch bestimmt in einer Datenbank, welche User, welches Verzeichnis angelegt hat, oder? Wenn ja, dann würde ich genau das in dem zweiten Script wieder auslesen. Damit wäre das Problem mit der Übergabe des Namens erledigt.
Sollte dem nicht so sein, schlage ich weiterhin eine Session vor. Das ist auf jeden Fall sicherer als ein verstecktes HTML-Element.

Zu deinem Upload-Problem:
Als erstes sage ich, dass dir wahrscheinlich ein Slash fehlt.
Wenn $w1 = 'MeinAlbum' ist, ergibt sich:
$upload_dir=$upload_dir_root.$w1 = '/usr/export/www/vhosts/xxxx/hosting/xxxx/upload/MeinAlbum'.

Dem zufolge lautet die Auflösung deiner letzten Anweisung (sagen wir $_FILES['toProcess']['name'] = 'MeinBild.jpg):
$upload_dir.$_FILES['toProcess']['name'] = /usr/export/www/vhosts/xxxx/hosting/xxxx/upload/MeinAlbumMeinBild.jpg'

Sollte dem nicht so sein, bitte ich dich , mal folgendes zu machen:
PHP-Code:

$upload_dir_root "/usr/export/www/vhosts/xxxx/hosting/xxxx/upload/"
$upload=$upload_dir_root.$w1
echo 
'<br /><br />'.$upload_dir_root;
echo 
'<br /><br />'.$upload;


if(
$_POST['senden']){ 
echo 
$w1
echo 
$_POST["w1"]; 

//echo $w1; //GEHT NICHT! WARUM??? 
$upload_dir=$upload_dir_root.$w1
echo 
'<br /><br />'.$upload_dir;
echo 
'<br /><br />'.$upload_dir.$_FILES['toProcess']['name'].'<br /><br />';
print_r($_FILES)); 

Schreib dann bitte hier, was dabei herausgekommen ist.



Alternatives Problem:
Du hast keine Rechte in dem Ordner zu schreiben. Der Fehler unterläuft einem schnell, wenn man die Serverkonfiguration nicht kennt. Manche schlauen Admins kommen auf die Idee, FTP- und PHP-Nutzer zu trennen. Hast du den Ordner per FTP-Programm erstellt, darfst du möglicherweise nicht mit PHP drauf zu greifen bzw. reinschreiben. Um das zu lösen, musst du dem Ordner Schreib- und Leserechte für die "Group" einstellen und nicht nur für den "Owner" (Besitzer).


LG
Micha

Argon007 26.06.2010 22:58

Hi Walter!

du hast recht ich benutzt kein SQL. ich wollte klein anfangen, einfach vereichnis anlegen bilder abladen ins verzeichnis. Der zweck dabei ist es das alle die bilder auf dem server ablegen können und das alle die bilder sich anschauen können.
die ausgabe für $w1 und $_POST["w1"] ist leer
Code:

if($_POST['senden']){
echo $w1;
echo $_POST["w1"];

wenn albumVerzeichnisErstellen.php aufgerufen wird bekomme man als ausgabe folgendes
Code:

Warning: mkdir() [function.mkdir]: File exists in /usr/export/www/vhosts/funnetwork/hosting/xxx/upload/albumVerzeichnisErstellen.php on line 11

/usr/export/www/vhosts/funnetwork/hosting/xxx/upload/Array ( [toProcess] => Array ( [name] => 6x9 cm.jpg [type] => image/jpeg [tmp_name] => /usr/export/tmp/phpTRwgV1 [error] => 0 [size] => 8486 ) )


Walter IT-Services 27.06.2010 01:20

Das ist ja auch das gleiche Problem aus deinem Anfangspost.
Bitte benutzt eine Session, um die Variable zwischen den beiden Scripten zu schpeichern. Wenn du von Session keine Ahnung hast, empfehle ich dies hier: Quakenet/#php Tutorial - de - Sessions


Zur Fehlermeldung:
Ich sehe in deinem Code nirgends den Aufruf von mkdir()...daher kann man dir da schlecht helfen. Außerdem scheinst du, laut Fehlermeldung, die Ausgabe eines Arrays an den Pfad zu hängen.


Mein Tipp:
Mach dich über Session schlau. Die wirst du früher oder später eh brauchen. Wenn nicht hierfür, dann für etwas Anderes.
Wenn du Fehler postest, hätten wir auch gern den Quellcode der Datei dazu. Um Gottes Willen nicht nur den Teil, den die Fehlermeldung angibt. Das bringt zu mindestens 70% niemanden etwas.

EDIT:
Außerdem hast du mir nicht alle Ausgaben genannt, die ich dir in deinen Quellcode geschrieben habe.


LG Micha


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:29 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023