Hallo beste mensen van php hulp.nl ik ben bezig een soort van websitetje te maken waar mensen tracks van een spel kunnen uploaden nouw ben ik aant klooien geweest Maar vervolgens werkt het niet ik heb de volgende code gedaan

(index.html)
[code]
<html>
<head><title>Upload een bestand</title></head>
<body>

<p>Als u <b>de naam niet invult zal het dezelfde naar houden als het bestand zelf.</p>

<form enctype="multipart/form-data" action="upload.php" method="post">
<p>
<input type="hidden" name="MAX_FILE_SIZE" value="51200" />
Selecteer een bestand: <input name="userfile" type="file"><br />
Naam om up te loaden: <input name="newname" type="text"><br />
<input type="submit" value="upload bestand" />
</p>
</form>

</body>
</html>

En bij upload.php

<?
global $_FILES;

$filename = $_FILES['userfile']['name'];

$allow[0] = "Gbx";
if ($_POST["newname"])
$uploadname = $_POST['newname'];
else
$uploadname = $_FILES['userfile']['name'];

$extentie = substr($uploadname, -3);

for ($i = 0; $i < count($allow); $i++)
{
if ($extentie == $allow[$i])
{
$extentie_check = "ok";
$i = count($allow) + 5;
}
}

if ($extentie_check)
{
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
move_uploaded_file($_FILES['userfile']['tmp_name'], "uploads/" . $uploadname);

echo "Het bestand is sucsesvoll geupload: $uploadname";
}
}
else
{
?>
[code]
Maar nu komt het probleem als ik dit een bestand upload op de server dan werkt het vervolgens niet dan krijg de de code inhoud van de pagia te zien en hij upload het bestand niet wat doe ik hier fout

Stefan Boonstra
Je krijgt de code van de pagina te zien? Ondersteunt je host wel PHP?

En dit:
<?php
for ($i = 0; $i < count($allow); $i++)
{
if ($extentie == $allow[$i])
{
$extentie_check = "ok";
$i = count($allow) + 5;
}
}
?>
kun je veel sneller met de functie in_array() doen. Zoek maar ff op php.net
Je bent de laatste else vergeten af te sluiten, en misschien nog wel meer, maar dat ben ik alweer vergeten wat dat ook al weer was:S

Je doet trouwens niet echt veel aan foutafhandeling en je extentiecontrole is ook niet echt goed.
Stel nu dat ik een bestand upload met de naam test.php?test=Gbx.
Dan ben ik al door je controle heen.

Bekijk dit script maar eens, ik denk dat deze een wat betere extensiecontrole heeft


<?php
error_reporting(E_ALL); 
if (isSet($_FILES["userfile"]["name"])){
	$filename = $_FILES['userfile']['name'];
	$allow[0] = "html";
	if (isSet($_POST["newname"]) && $_POST["newname"] != ''){
		$uploadname = $_POST['newname'];
	}else{
		$uploadname = $_FILES['userfile']['name'];
	}
	$pathext = pathinfo($filename);
	$typeext = explode("/",$_FILES['userfile']['type']);
	if (in_array($pathext["extension"],$allow) && in_array($typeext[1],$allow)){
		$extentie_check = true;
	}
	if (isSet($extentie_check)){
		if (is_uploaded_file($_FILES['userfile']['tmp_name'])){  
			move_uploaded_file($_FILES['userfile']['tmp_name'], "../php/" . $uploadname . "." . $typeext[1]);  
			echo "Het bestand is sucsesvoll geupload: $uploadname.$typeext[1]"; 
		}else{
			echo 'fout, het bestand is niet upgeload';
		}
	}else{
		echo 'Dit soort bestanden mogen niet worden geupload';
	}
}else{
	echo 'geen bestand opgegeven';
}
?>


[edit]net te laat, naja. Ook maar even Jan's in_array erin verwerkt:D[/edit]
Bedankt voor de informate ik zal dit allemaal ff proberen hoop als het nu lukt

Tanks

Stefan Boonstra
hallo hier ben ik weer beste mensen van php hulp .nl nu zit ik weer met het probleem hij wil nog steeds niet uploaden ik selecteer het bestand en zet een naam er in en dan werkt het vervolgend niet hij geeft de volgede foutmelding

Warning: move_uploaded_file(http://192.168.1.115:90/php/test.html.html) [function.move-uploaded-file]: failed to open stream: HTTP wrapper does not support writeable connections. in D:\website\upload.php on line 18

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\PHP\uploadtemp\php49.tmp' to 'http://192.168.1.115:90/php/test.html.html' in D:\website\upload.php on line 18
Het bestand is sucsesvoll geupload: test.html.html

en ik heb deze php code er ingezet

<?php
error_reporting(E_ALL);
if (isSet($_FILES["userfile"]["name"])){
$filename = $_FILES['userfile']['name'];
$allow[0] = "html";
if (isSet($_POST["newname"]) && $_POST["newname"] != ''){
$uploadname = $_POST['newname'];
}else{
$uploadname = $_FILES['userfile']['name'];
}
$pathext = pathinfo($filename);
$typeext = explode("/",$_FILES['userfile']['type']);
if (in_array($pathext["extension"],$allow) && in_array($typeext[1],$allow)){
$extentie_check = true;
}
if (isSet($extentie_check)){
if (is_uploaded_file($_FILES['userfile']['tmp_name'])){
move_uploaded_file($_FILES['userfile']['tmp_name'], "http://192.168.1.115:90/php/" . $uploadname . "." . $typeext[1]);
echo "Het bestand is sucsesvoll geupload: $uploadname.$typeext[1]";
}else{
echo 'fout, het bestand is niet upgeload';
}
}else{
echo 'Dit soort bestanden mogen niet worden geupload';
}
}else{
echo 'geen bestand opgegeven';
}
?>

Snap er nu helemaal niks meer van wat is er verkeerd met deze code

Stefan Boonstra
je kunt niet uploaden naar een externe locatie
hoe maak ik php wijs dat dat geen externe funcktie is?? Het moet dus naar mijn eigen server kijk mensen komen op ijn erver en dat bestand moet naar die zelfde server worden geupload Mijn server dus heb ben gister de hele dag kwijt geweest aan niet veel

Groeten Stefan Boonstra
regel 18:

move_uploaded_file($_FILES['userfile']['tmp_name'], "http://192.168.1.115:90/php/" . $uploadname . "." . $typeext[1]);

daarin moet je http://192.168.1.115:90/php/ vervangen door een relatief path, dus bijvoorbeeld ../php/
nee het heeft nog steeds geen resultaat het werkt nog steeds niet ik heb hem ff online gezet dan kunnen jullie ff kijken wat er mis is dit is deze adres http://217.121.119.163:90/ ik heb nu alleen ff html bestanden die kunnen worden geupload f als test maar het werkt niet.

Stefan Boonstra
wat is hier nouw in vrdesnaam mis mee ik begrijp het echt niet meer heb gister nacht ook maar kort geslapen Hele dag kwijt van af smorgens vroeg en nu wil het nog niet

index.html

<html>
<head><title>Upload een bestand</title></head>
<body>

<p>Je kunt de <b>naam om up te loaden leeg laten</b>. Dan wordt de naam zoals het bestand om het moment zelf heet.</p>

<form enctype="multipart/form-data" action="upload.php" method="post">
<p>
<input type="hidden" name="MAX_FILE_SIZE" value="51200" />
Selecteer een bestand: <input name="userfile" type="file"><br />
Naam om up te loaden: <input name="newname" type="text"><br />
<input type="submit" value="upload bestand" />
</p>
</form>

</body>
</html>

Upload.php

<?php
error_reporting(E_ALL);
if (isSet($_FILES["userfile"]["name"])){
$filename = $_FILES['userfile']['name'];
$allow[0] = "html";
if (isSet($_POST["newname"]) && $_POST["newname"] != ''){
$uploadname = $_POST['newname'];
}else{
$uploadname = $_FILES['userfile']['name'];
}
$pathext = pathinfo($filename);
$typeext = explode("/",$_FILES['userfile']['type']);
if (in_array($pathext["extension"],$allow) && in_array($typeext[1],$allow)){
$extentie_check = true;
}
if (isSet($extentie_check)){
if (is_uploaded_file($_FILES['userfile']['tmp_name'])){
move_uploaded_file($_FILES['userfile']['tmp_name'], "../php/" . $uploadname . "." . $typeext[1]);
echo "Het bestand is sucsesvoll geupload: $uploadname.$typeext[1]";
}else{
echo 'fout, het bestand is niet upgeload';
}
}else{
echo 'Dit soort bestanden mogen niet worden geupload';
}
}else{
echo 'geen bestand opgegeven';
}
?>


ja ik bedoel ben al 3 dagen bezig met deze script en die werkt nog steeds niet heb ook niet veel geslapen al maar ik ga niet eerder slapen tot ik deze script voorelkaar gekregen heb.

Vriendelijk groet Stefan Boonstra

Reageren