webForumDet fria alternativet

Problem med med ett uploadscript

PHP

1 svar · 388 visningar · startad av Mycodez

Medlem sedan feb. 2010445 inlägg
Frågan#1

Hej WF.

jag håller på med att göra så kan kan ladda upp bilder till olika album. men jag har stöt på lite problem. Jag får att mitt albumid blir 0 när jag laddar upp bilderna.
min tabell jag vill spara länken till bilderna ser ut så här:
id , userid , albumid , type , name , descrition och location

sidan jag vill att man ska kunna ladda upp bilderna på är inne i albumet.

koden till det ser ut:

<?php
include('design/header.php');
require('connect.php');

$albumid = $_GET['album'];
$id = $_SESSION['id'];

//Display album name
$album = mysql_query("SELECT name FROM albums WHERE id='$albumid'");
$albumarray = mysql_fetch_assoc($album);
echo "<font size='4' face='arial'>".$albumarray['name']."</font><p>";

$image = mysql_query("SELECT * FROM items WHERE userid='$id' AND albumid='$albumid'");

if(mysql_num_rows($image)<=0)
	echo "This album have no pictures.";

echo"<table width='100%' cellpadding='7'>";
while($row = mysql_fetch_assoc($image))
{
echo "
<tr>
<td width='200'>
	<img src='store/".$row['location']."' width='200' height='120'>
</td>
<td>
<font size='2' face='arial'>
	<b><a href='".$row['location']."' target='_blank'>".$row['name']."</a></b><br>
	".$row['description']."
	</font
</td>
</tr>
";

}
echo "</table>";

if($_POST['submit'])
{
	//get file attributes
	$name = $_FILES['myfile']['name'];
	$tmp_name = $_FILES['myfile']['tmp_name'];
	
	if($name)
	{
		//start upload process
		$location = "store/$name";
		move_uploaded_file($tmp_name,$location);
		
		$query = mysql_query("INSERT INTO items VALUES('','$id','$albumid','i','','','$location')");
		echo "Your image has been uploaded!";
	}
	else
	die("Please select a file!");
	
}

echo "Upload your images to album:;

<form action='viewalbum.php' method='POST' enctype='multipart/form-data'>
File:<input type='file' name='myfile'>

<br>
<input type='submit' name='submit' value='Upload!'>
</form>
";

include('design/footer.php');
?>

och det hade vart snällt om ni vill hjälpa mig att sätta ditt så man kan skriva in ett namn/rubrik till bilden och att ska kuna skriva in en förklaring till bilden hade vart jätte snällt.

Kommentera gärna koden för lär mig bättre då har inte hållt på med php så länge.

Tack på för hand

Robin :stud

Medlem sedan sep. 201046 inlägg
#2

Ta ett steg i taget...
Om man ska göra ett uppladdningsskript eller använda GET-variablen måste man tänka på säkerheten, din kod lämnar sidan uppe för SQL-injektioner.

Sedan ser jag inte session_start(); någonstans till användning av $_SESSION['id'], ligger den i connect.php ?

För att få ett albumid med din kod måste du skicka den till sidan via URLn varje gång (ex; mittskript.php?albumid=123, så den skickas till $_GET variabeln), eftersom att du skickar inte album id med ditt formulär för bilduppladningen ($_POST) så kommer inget albumid finnas. När du klickar på submit så laddas 'viewalbum.php' om utan GET-variabler.

För att lösa detta om ja skulle ha din kod skulle jag skapa ett dolt input fält(type="hidden") med $albumid som värde som skickas sen med $_POST (eller ett tomt fält där användaren får skiva in id), sen när du klickar på submit laddas sidan om, så får du albumid i variablen $_POST['albumid']

P.S du behöver inte ha php-sluttag längst ner på en fil ifall filen innehåller/slutar med php-kod. Det krävs inte av PHP, och utelämna det förhindrar oavsiktlig injektion av avslutande tomrum(mellanslag) i svaret."

253 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)