Ik wil een bestand door een gebruiker laten hernoemen. De aanroep wordt FileRename.php?id=text.txt
Er wordt dan een formulier getoond met de naam. Deze kan dan aangepast worden. Nu komt het. Dat gebeurt dus niet. Hier mijn code, zonder <! Doc...

<?php
$filenaam=($_GET["id"]);
If (isset($_POST['submit'])) {
	$nieuwenaam = $_POST['nieuwenaam'];
	if (!file_exists($nieuwenaam)) {
	     copy($filenaam, $nieuwenaam);
	     unlink($filenaam);
	     echo '<script type="text/javascript">alert("Gelukt\n\nHet bestand is hernoemd. U keert nu terug.");</script>' ;
 	     header('Location: EditDir.php');
 	 } else {
	    echo '<script type="text/javascript">alert("Helaas \n\nHet bestand bestaat al. U keert nu terug.");</script>' ;
  	    header('Location: EditDir.php');
 	}
}
?>	
<br>
<br>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="hernoemen" onkeypress="return event.keyCode != 13;">
<table width="50%" border="0" bgcolor="fefefe">
<tr>
<td><div align="center">Bestand hernoemen</div></td>
</tr>
<tr><td><div align="center">Huidige naam: <i>'<?php echo $filenaam; ?>'</i></div></td></tr>
<tr>
<td><div align="center">Hernoemen naar:<br>
<input type="text" name="nieuwenaam" size="90" minsize="5" maxsize="90" placeholder="<?php echo $filenaam; ?>"  value='<?php echo $filenaam; ?>' required />
</div></td></tr>
<tr><td><div align="center">
<input type="hidden" name="submit" value="true" />
<input type="submit" value="  Hernoem het bestand  " />
</div>
</td></tr>
</table>
</form>


Wat doe ik niet goed?
Zet dit eens bovenin je script:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
Wat SanThe zegt.
Tevens zie ik een hoop fouten in je code waar je tegenaan kan lopen:

- Ik zie nergens een controle of je $_GET['id'] bestaat. Dit kan eenvoudig in combinatie met [php]isset[/php]
- Ik zie dat je output (javascript alert) voor je header plaatst, en dat dat kan niet. Er mag GEEN output voor een header staan. Tevens als je een location-header gebruikt moet je deze beëindigen met een exit(). Je script wil je ook daadwerkelijk stoppen vanaf dat moment.
- Verder is <?php echo $_SERVER['PHP_SELF'];?> overbodig in je action en kan je deze weglaten. je voer immers toch het script uit in hetzelfde bestand. Ook mag je zelfs het action-attribuut volledig weglaten in HTML5, in dit geval.

En nog een kanttekening: Tabellen zijn niet meer nodig hiervoor. Met de juiste CSS-regels op je formulier elementen kan je prima je formulier opmaken en indelen.
@SanThe: Ik heb dit gebruikt en ik kreeg geen foutmelding meer.
@Ariën: Check id komt fase 2. Dank voor de opmerkingen/aanwijzingen. Heb ik echt wat aan. Dank! CSS had ik eruit gehaald om zo min mogelijk code te hebben en te testen.

[size=xsmall]Toevoeging op 11/10/2017 13:05:17:[/size]

Dank!. Ik heb de code aangepast en helemaal opgenomen.
Vraag: Ik weet alleen niet waar ik de header nu moet neerzetten, omdat ik terug wil gaan.
CSS: styling wel opgenomen, allen tabel nog niet eruit gehaald.

Moet nog een hoop leren, en leer een hoop dank jullie!


<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Overzicht van bestanden"</title>
<meta name="language" content="en" />  
<meta name="description" content="" />  
<meta name="keywords" content="" />
<style>
input[type=text], select {
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0;
    display: inline-block;
    border: 1px solid #ccc;
    border-radius: 4px;
    box-sizing: border-box;
}

input[type=submit] {
    width: 100%;
    background-color: red;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    border-radius: 4px;
    cursor: pointer;
}

input[type=submit]:hover {
    background-color: #45a049;
}

div {
    border-radius: 5px;
    background-color: #f2f2f2;
    padding: 20px;
}
table {
    margin : 0 auto;
    align= "center";
    border-radius: 8px;
    background-color:#efefef;
    -moz-box-shadow: 10px 10px 5px #888;
    -webkit-box-shadow: 10px 10px 5px #888;
    box-shadow: 10px 10px 5px #888;
    padding: 3px 3px 3px 3px;
}

button:hover {
	background-color: red;
	color: white;
	border: white;
	border-radius: 8px;
}

button {
   color: red;
   background-color: white;
   border:red;
   border-radius: 8px;
}
</style>
</head>
<body>
<?php
if (isset($_GET["id"])) {
  $filenaam=($_GET["id"]);
  $boodschap='Helaas, bestand niet ingevuld';
}
If ((isset($_POST['submit'])) && ($boodschap!="")) {
	$nieuwenaam = $_POST['nieuwenaam'];
	if (!file_exists($nieuwenaam)) {
	     copy($filenaam, $nieuwenaam);
	     unlink($filenaam);
	     $boodschap='Bestand in hernoemd.';
 	 } else {
	    $boodschap='Bestand bestaat al en is niet overschreven!';   
 	}	
} 
if ($boodschap<>"") {
	echo '<script type="text/javascript">alert($error);</script>' ;
}  
?>	
<br>
<br>
<form method="post" enctype="multipart/form-data" name="hernoemen" onkeypress="return event.keyCode != 13;">
<table width="50%" border="0" bgcolor="fefefe">
<tr>
<td><div align="center">Bestand hernoemen</div></td>
</tr>
<tr><td><div align="center">Huidige naam: <i>'<?php echo $filenaam; ?>'</i></div></td></tr>
<tr>
<td><div align="center">Hernoemen naar:<br>
<input type="text" name="nieuwenaam" size="90" minsize="5" maxsize="90" placeholder="<?php echo $filenaam; ?>"  value='<?php echo $filenaam; ?>' required />
</div></td></tr>
<tr><td><div align="center">
<input type="hidden" name="submit" value="true" />
<input type="submit" value="  Hernoem het bestand  " />
</div>
</td></tr>
</table>
</form>
</body>
</html>

Ik zou je uitvoerende code bovenaan je HTML zetten, en niet halverwege.
Dan kan je zonder problemen een header-loaction gebruiken.
je realiseert je dat als het kopieren niet goed gaat, bijvoorbeeld omdat de nieuwe naam onmogelijk is door rare tekens, je in de volgende regel wel de oorspronkelijke file weggooit?

De functie rename() lijkt me beter geschikt. Ook al, omdat je dan niet eerst een file van 2GB kopieert (overdreven, maar om even aan te geven wat je doet) om daarna de oorsprong weg te gooien

[size=xsmall]Toevoeging op 11/10/2017 14:05:02:[/size]

En je moet natuurlijk ook als PHP zijnde, schrijfrechten hebben op die file/locatie
@Ivo, Ariën:
Ik heb eea aagenaspt. Schrijfrechten zijn goed. En een goede tip op te renamen. Ik krijg echter geen melding of het nu goed of slecht gegaan is. Kennelijk doe ik nog iets niet goed. De header('Location heb ik er uit gehaald.

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
<?php
$boodschap='';
$success=false;
if (isset($_GET["id"])) {
  $filenaam=($_GET["id"]);
  $boodschap='Helaas, bestand niet ingevuld';
}
If ((isset($_POST['submit'])) && ($boodschap!="")) {
	$nieuwenaam = $_POST['nieuwenaam'];
	if (!file_exists($nieuwenaam)) {
	     rename($filenaam, $nieuwenaam);
	     $boodschap='Gelukt\n\nBestand is hernoemd.';
 	 } else {
	    $boodschap='Gestopt\n\nBestand bestaat al en is niet overschreven!';   
 	}	
} 
if ($boodschap<>"") {
	echo '<script type="text/javascript">alert($boodschap);</script>' ;
	$success=true;
}  
// if (isset($success)) {
//     header ('Location: EditDir.php');
//     exit();
// }
?>
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Overzicht van bestanden"</title>
<meta name="language" content="en" />  
<meta name="description" content="" />  
<meta name="keywords" content="" />
<style>
input[type=text], select {
    width: 80%;
    padding: 12px 20px;
    margin: 8px 0;
    display: inline-block;
    border: 1px solid #ccc;
    border-radius: 4px;
    box-sizing: border-box;
}

h1 {
   align="center";
   }

input[type=submit] {
    width: 20%;
    background-color: red;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    border-radius: 4px;
    cursor: pointer;
}

input[type=submit]:hover {
    background-color: #45a049;
}

div {
    border-radius: 5px;
    background-color: #f2f2f2;
    padding: 20px;
}

.table {
    width: 650;
    margin : 0 auto;
    align= "center";
    border-radius: 8px;
    background-color:#efefef;
    -moz-box-shadow: 10px 10px 5px #888;
    -webkit-box-shadow: 10px 10px 5px #888;
    box-shadow: 10px 10px 5px #888;
    padding: 3px 3px 3px 3px;
}

button:hover {
	background-color: red;
	color: white;
	border: white;
	border-radius: 8px;
}

button {
   color: red;
   background-color: white;
   border:red;
   border-radius: 8px;
}
</style>
</head>
<body>
<br>
<br>
<form method="post" enctype="multipart/form-data" name="hernoemen" onkeypress="return event.keyCode != 13;">
<div class="table">
<h1 align="center">Bestand hernoemen</h1>
<p align="center">
Huidige naam: <i>'<?php echo $filenaam; ?>'</i>
<br>
Hernoemen naar:<br>
<input type="text" name="nieuwenaam" size="90" minsize="5" maxsize="90" placeholder="<?php echo $filenaam; ?>"  value='<?php echo $filenaam; ?>' required />
<input type="hidden" name="submit" value="true" />
<br>
<input type="submit" value="  Hernoem het bestand  " />
</p>
</div>
</form>
</body>
</html>


Willen jullie nog eens meekijken en mij de goede kant op zetten?
dank
Jan

[size=xsmall]Toevoeging op 11/10/2017 14:26:19:[/size]

@Ivo, Ariën:
Ik heb eea aagenaspt. Schrijfrechten zijn goed. En een goede tip op te renamen. Ik krijg echter geen melding of het nu goed of slecht gegaan is. Kennelijk doe ik nog iets niet goed. De header('Location heb ik er uit gehaald.

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
<?php
$boodschap='';
$success=false;
if (isset($_GET["id"])) {
  $filenaam=($_GET["id"]);
  $boodschap='Helaas, bestand niet ingevuld';
}
If ((isset($_POST['submit'])) && ($boodschap!="")) {
	$nieuwenaam = $_POST['nieuwenaam'];
	if (!file_exists($nieuwenaam)) {
	     rename($filenaam, $nieuwenaam);
	     $boodschap='Gelukt\n\nBestand is hernoemd.';
 	 } else {
	    $boodschap='Gestopt\n\nBestand bestaat al en is niet overschreven!';   
 	}	
} 
if ($boodschap<>"") {
	echo '<script type="text/javascript">alert($boodschap);</script>' ;
	$success=true;
}  
// if (isset($success)) {
//     header ('Location: EditDir.php');
//     exit();
// }
?>
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Overzicht van bestanden"</title>
<meta name="language" content="en" />  
<meta name="description" content="" />  
<meta name="keywords" content="" />
<style>
input[type=text], select {
    width: 80%;
    padding: 12px 20px;
    margin: 8px 0;
    display: inline-block;
    border: 1px solid #ccc;
    border-radius: 4px;
    box-sizing: border-box;
}

h1 {
   align="center";
   }

input[type=submit] {
    width: 20%;
    background-color: red;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    border-radius: 4px;
    cursor: pointer;
}

input[type=submit]:hover {
    background-color: #45a049;
}

div {
    border-radius: 5px;
    background-color: #f2f2f2;
    padding: 20px;
}

.table {
    width: 650;
    margin : 0 auto;
    align= "center";
    border-radius: 8px;
    background-color:#efefef;
    -moz-box-shadow: 10px 10px 5px #888;
    -webkit-box-shadow: 10px 10px 5px #888;
    box-shadow: 10px 10px 5px #888;
    padding: 3px 3px 3px 3px;
}

button:hover {
	background-color: red;
	color: white;
	border: white;
	border-radius: 8px;
}

button {
   color: red;
   background-color: white;
   border:red;
   border-radius: 8px;
}
</style>
</head>
<body>
<br>
<br>
<form method="post" enctype="multipart/form-data" name="hernoemen" onkeypress="return event.keyCode != 13;">
<div class="table">
<h1 align="center">Bestand hernoemen</h1>
<p align="center">
Huidige naam: <i>'<?php echo $filenaam; ?>'</i>
<br>
Hernoemen naar:<br>
<input type="text" name="nieuwenaam" size="90" minsize="5" maxsize="90" placeholder="<?php echo $filenaam; ?>"  value='<?php echo $filenaam; ?>' required />
<input type="hidden" name="submit" value="true" />
<br>
<input type="submit" value="  Hernoem het bestand  " />
</p>
</div>
</form>
</body>
</html>


Willen jullie nog eens meekijken en mij de goede kant op zetten?
dank
Jan

[size=xsmall]Toevoeging op 11/10/2017 14:29:19:[/size]

@Ivo, Ariën:
Ik heb eea aagenaspt. Schrijfrechten zijn goed. En een goede tip op te renamen. Ik krijg echter geen melding of het nu goed of slecht gegaan is. Kennelijk doe ik nog iets niet goed. De header('Location heb ik er uit gehaald.

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
<?php
$boodschap='';
$success=false;
if (isset($_GET["id"])) {
  $filenaam=($_GET["id"]);
  $boodschap='Helaas, bestand niet ingevuld';
}
If ((isset($_POST['submit'])) && ($boodschap!="")) {
	$nieuwenaam = $_POST['nieuwenaam'];
	if (!file_exists($nieuwenaam)) {
	     rename($filenaam, $nieuwenaam);
	     $boodschap='Gelukt\n\nBestand is hernoemd.';
 	 } else {
	    $boodschap='Gestopt\n\nBestand bestaat al en is niet overschreven!';   
 	}	
} 
if ($boodschap<>"") {
	echo '<script type="text/javascript">alert($boodschap);</script>' ;
	$success=true;
}  
// if (isset($success)) {
//     header ('Location: EditDir.php');
//     exit();
// }
?>
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Overzicht van bestanden"</title>
<meta name="language" content="en" />  
<meta name="description" content="" />  
<meta name="keywords" content="" />
<style>
input[type=text], select {
    width: 80%;
    padding: 12px 20px;
    margin: 8px 0;
    display: inline-block;
    border: 1px solid #ccc;
    border-radius: 4px;
    box-sizing: border-box;
}

h1 {
   align="center";
   }

input[type=submit] {
    width: 20%;
    background-color: red;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    border-radius: 4px;
    cursor: pointer;
}

input[type=submit]:hover {
    background-color: #45a049;
}

div {
    border-radius: 5px;
    background-color: #f2f2f2;
    padding: 20px;
}

.table {
    width: 650;
    margin : 0 auto;
    align= "center";
    border-radius: 8px;
    background-color:#efefef;
    -moz-box-shadow: 10px 10px 5px #888;
    -webkit-box-shadow: 10px 10px 5px #888;
    box-shadow: 10px 10px 5px #888;
    padding: 3px 3px 3px 3px;
}

button:hover {
	background-color: red;
	color: white;
	border: white;
	border-radius: 8px;
}

button {
   color: red;
   background-color: white;
   border:red;
   border-radius: 8px;
}
</style>
</head>
<body>
<br>
<br>
<form method="post" enctype="multipart/form-data" name="hernoemen" onkeypress="return event.keyCode != 13;">
<div class="table">
<h1 align="center">Bestand hernoemen</h1>
<p align="center">
Huidige naam: <i>'<?php echo $filenaam; ?>'</i>
<br>
Hernoemen naar:<br>
<input type="text" name="nieuwenaam" size="90" minsize="5" maxsize="90" placeholder="<?php echo $filenaam; ?>"  value='<?php echo $filenaam; ?>' required />
<input type="hidden" name="submit" value="true" />
<br>
<input type="submit" value="  Hernoem het bestand  " />
</p>
</div>
</form>
</body>
</html>


Willen jullie nog eens meekijken en mij de goede kant op zetten?
dank
Jan

[size=xsmall]Toevoeging op 11/10/2017 14:29:31:[/size]

@Ivo, Ariën:
Ik heb eea aagenaspt. Schrijfrechten zijn goed. En een goede tip op te renamen. Ik krijg echter geen melding of het nu goed of slecht gegaan is. Kennelijk doe ik nog iets niet goed. De header('Location heb ik er uit gehaald.

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
<?php
$boodschap='';
$success=false;
if (isset($_GET["id"])) {
  $filenaam=($_GET["id"]);
  $boodschap='Helaas, bestand niet ingevuld';
}
If ((isset($_POST['submit'])) && ($boodschap!="")) {
	$nieuwenaam = $_POST['nieuwenaam'];
	if (!file_exists($nieuwenaam)) {
	     rename($filenaam, $nieuwenaam);
	     $boodschap='Gelukt\n\nBestand is hernoemd.';
 	 } else {
	    $boodschap='Gestopt\n\nBestand bestaat al en is niet overschreven!';   
 	}	
} 
if ($boodschap<>"") {
	echo '<script type="text/javascript">alert($boodschap);</script>' ;
	$success=true;
}  
// if (isset($success)) {
//     header ('Location: EditDir.php');
//     exit();
// }
?>
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Overzicht van bestanden"</title>
<meta name="language" content="en" />  
<meta name="description" content="" />  
<meta name="keywords" content="" />
<style>
input[type=text], select {
    width: 80%;
    padding: 12px 20px;
    margin: 8px 0;
    display: inline-block;
    border: 1px solid #ccc;
    border-radius: 4px;
    box-sizing: border-box;
}

h1 {
   align="center";
   }

input[type=submit] {
    width: 20%;
    background-color: red;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    border-radius: 4px;
    cursor: pointer;
}

input[type=submit]:hover {
    background-color: #45a049;
}

div {
    border-radius: 5px;
    background-color: #f2f2f2;
    padding: 20px;
}

.table {
    width: 650;
    margin : 0 auto;
    align= "center";
    border-radius: 8px;
    background-color:#efefef;
    -moz-box-shadow: 10px 10px 5px #888;
    -webkit-box-shadow: 10px 10px 5px #888;
    box-shadow: 10px 10px 5px #888;
    padding: 3px 3px 3px 3px;
}

button:hover {
	background-color: red;
	color: white;
	border: white;
	border-radius: 8px;
}

button {
   color: red;
   background-color: white;
   border:red;
   border-radius: 8px;
}
</style>
</head>
<body>
<br>
<br>
<form method="post" enctype="multipart/form-data" name="hernoemen" onkeypress="return event.keyCode != 13;">
<div class="table">
<h1 align="center">Bestand hernoemen</h1>
<p align="center">
Huidige naam: <i>'<?php echo $filenaam; ?>'</i>
<br>
Hernoemen naar:<br>
<input type="text" name="nieuwenaam" size="90" minsize="5" maxsize="90" placeholder="<?php echo $filenaam; ?>"  value='<?php echo $filenaam; ?>' required />
<input type="hidden" name="submit" value="true" />
<br>
<input type="submit" value="  Hernoem het bestand  " />
</p>
</div>
</form>
</body>
</html>


Willen jullie nog eens meekijken en mij de goede kant op zetten?
dank
Jan
<?php If ((isset($_POST['submit'])) && ($boodschap!="")) { ?>

als de submit knop is gedrukt EN je een foutmelding hebt die niet leeg is, dan ga je renamen.

Terwijl je juist GEEN foutmelding wilt hebben, dus $boodschap == ''
Probeer dit :

echo '<script type="text/javascript">alert("' . $boodschap . '");</script>';
En verder hoort een Javascript niet boven de doctype.
Ik leer steeds meer. En ga door om het werkend te krijgen.

Reageren