• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

copy und rename funktionieren nicht mit variablen

Klopp1991

Neues Mitglied
Ich habe folgendes Script:
PHP:
$pfadneu = "../".ereg_replace("%2F","/", $_GET["n"]);
// pfadneu := "../dateien/neu.pdf"
$pfadalt = "../".ereg_replace("%2F","/", $_GET["a"]);
// pfadalt := "../dateien/alt.pdf"
copy($pfadalt,$pfadneu);
rename($pfadalt,$pfadneu);

Wenn ich die Variablen einsetze so funktioniert es nicht wenn ich jedoch die Pfade direkt als String einsetze funktioniert es, WIESO? :-S
 
PHP:
error_reporting(E_ALL);

$pfadneu = "../".ereg_replace("%2F","/", $_GET["n"]);
// pfadneu := "../dateien/neu.pdf"
$pfadalt = "../".ereg_replace("%2F","/", $_GET["a"]);
// pfadalt := "../dateien/alt.pdf"

echo "$pfadneu<br />\n$pfadalt<br />\n";

copy($pfadalt,$pfadneu);
rename($pfadalt,$pfadneu);

die ausgabe des scripts schreibst du mal hier ins forum ^^
 
Notice: Undefined index: n in S:\Programme\xampp\htdocs\test.php on line 4

Notice: Undefined index: a in S:\Programme\xampp\htdocs\test.php on line 6
../
../

Warning: copy() [function.copy]: The first argument to copy() function cannot be a directory in S:\Programme\xampp\htdocs\test.php on line 11

Warning: rename(../,../) [function.rename]: Permission denied in S:\Programme\xampp\htdocs\test.php on line 12
Ich machs mir jetzt bequem.
 
$_GET['n'] und $_GET['a'] sind wohl nicht definiert worden ^^ schick uns mal die URL mit der du das script aufrufst (auch wenns nur bei dir lokal ist es geht nicht darum das man raufklicken kann sondern das wir sehen was gesendet wird ;))
 
PHP:
<?php
$pfadneu = "../".ereg_replace("%2F","/", $_GET["n"]);
$pfadalt = "../".ereg_replace("%2F","/", $_GET["a"]);
// löschen
if($_GET["l"]) {
    unlink("../".$_GET["l"]);
}



// kopieren
if($_GET["k"]) {
    copy($pfadalt,$pfadneu);
}



// umbennen
if($_GET["u"]) {
    rename($pfadalt,$pfadneu);
    exit();
}
echo $pfadalt."<br>";
echo $pfadneu;
echo "kopieren ";copy("../dateien/test/NikonD40.pdf",$pfadneu);
echo "verschieben: ";rename("../dateien/test/NikonD40.pdf","../dateien/test/nnnnn");
//header("Location: ../intern/dateisystem.php");


// hochladen
//if($_POST["upload1"]) {
//    for($i = 1: $i <= 5; $i++) {
//        move_uploaded_file($_FILES["upload"]['tmp_name'], "upload/datei.txt"); 
//    }
//}
?>
PHP:
<?php
include("../includes/headeri.php");
// kopieren
if($_GET["k"]) {
    echo "Wohin soll kopiert werden?<br>";
    echo "<form action=\"../check/dateibearbeiten.php?k=ok\" method=\"get\">";
    echo "<input type=\"text\" name=\"n\">";
    echo "<input type=\"submit\" name=\"kopieren\" value=\"kopieren\">";
    echo "<input style=\"display:none;\" type=\"text\" name=\"a\" value=\"".$_GET[k]."\">";
    echo "</form>";
}



// umbennen
if($_GET["u"]) {
    echo "Wie soll die Datei heissen?<br>";
    echo "<form action=\"../check/dateibearbeiten.php?u=ok\" method=\"get\">";
    echo "<input type=\"text\" name=\"n\">";
    echo "<input type=\"submit\" name=\"kopieren\" value=\"umbennen\">";
    echo "<input style=\"display:none;\" type=\"text\" name=\"a\" value=\"".$_GET[u]."\">";
    echo "</form>";
}
include("../includes/footeri.php");
?>
 
kleiner tipp am rande:

wenn du mit " im HTML arbeitest, aber das HTML über PHP (sprich echo) ausgeben willst kannst du dir die \" sparen indem du das echo mit ' begrenzt.

Beispiel:
Code:
echo 'Hier steht mal "ein" kleiner "Test"! ';
;) nur so am rande

und ich hoffe die 2 scripte arbeiten nie zur gleichen zeit!
Du verwendest 2 mal die gleichen GET-Variablen für unterschiedliche aufgaben. Nennen die treffender! Da kommst du auch irgendwann wenn du in 1-2 jahren mal den code anschaust leichter wieder rein! So kurze Variablen sind eigenltich nur in for-schleifen sinnvoll, wo sie eh nur in dem bereich gebraucht werden.

### Edit ###
Achaj, schau mal in deine Formen:
bei Value steht
Code:
$_GET[u]
Du meinst aber sicher:
Code:
$_GET["u"]
 
da er "u" aber eher nicht als konstante definiert hab ist das zwar falsch aber kein fehler ;) ^^
 
Bin zwar einwenig im Stress aber mein Senf muss ich trotzdem hinterlassen. ;-)
wenn du mit " im HTML arbeitest, aber das HTML über PHP (sprich echo) ausgeben willst kannst du dir die \" sparen indem du das echo mit ' begrenzt.
Das weiss ich, allerdings gefällt mir die Variante besser und die bin ich mir seit Jahren so gewohnt. ;ugl

und ich hoffe die 2 scripte arbeiten nie zur gleichen zeit!
Du verwendest 2 mal die gleichen GET-Variablen für unterschiedliche aufgaben.
Das ist richtig. Es wird allerdings pro Durchgang jeweils nur eine Variabel übergeben. Rein theoretisch wäre es aber auch möglich zu kopieren und anschliessend die kopierte Datei umzubennen. :shock:
Nennen die treffender! Da kommst du auch irgendwann wenn du in 1-2 jahren mal den code anschaust leichter wieder rein!
Geb ich dir EIGENTLICH Recht. Aber ich bin es mir eh gewohnt das ganze dann auzukommentieren und jeweils zur "Funktion" ein Header zu Schreiben und in diesem Heder ist gleichzeitig eine Modulspezifikation wo aller übergebenen und gebrauchte Variabeln definiert werden.

Achaj, schau mal in deine Formen:
bei Value steht
Code:
$_GET[u]
Du meinst aber sicher:
Code:
$_GET["u"]
Ja das mein ich. Dies werde ich sobald ich Zeit finde verbessern.

Danke für die angebrachte Kritik und ein schönes Wochenende. :grin:
 

Neueste Beiträge

Zurück
Oben