Jeg har gang i en online kogebog, og til denne kan man efter at ha indtastet opskriften upload et billede, problemet er, at den ikke lagrer billedet på serveren, den markere ikke opskriften til at have et billede og som prikken over i´et, så overskriver de nye billed uploads de andre opskrifters billede.
Jeg har brug for hjælp til fejlfinding, og meget gerne rettelse af dem, ELLER, en der kan skrive et nyt upload system.
Indtast.php
<?php
session_start();
if(!$_SESSION['login'] == 1) {
header("Location: /cdb/logind.php");
exit;
}
include($DOCUMENT_ROOT.'/includes/db.php');
include($DOCUMENT_ROOT.'/includes/start/kb5.php');
$page_title = "Indtast opskrift";
?>
--> lidt html på siden <--
<form method="POST" action="action.php" onSubmit="return checkform(this)">
<table width="100%" border="0">
<tr>
<td colspan="2" class="25_ind"><b>Overskrift & Kategori</b></td>
</tr>
--> osv., en længere formular <--
Action.php (gemmer opskriften i SQL)
<?php
session_start();
if(!$_SESSION['login'] == 1) {
mail("kogebog@anakin.dk", "Opskrift tilføjet", "En bruger har tilføjet en opskrift til Kogebogen!");
header("Location: /cdb/logind.php");
exit;
}
$loginid = $_SESSION["ID"];
include($DOCUMENT_ROOT.'/includes/db.php');
if ($opret == "Send opskrift"){
mysql_query("INSERT INTO kogebog_opskrifter (overskrift, kategori_id, personer, tid, pris, ingredienser, tilberedning, serveringsforslag, tilbehor, tips, pynt, fryseegnet, historie, kj, kcal, check1, check2, userid) VALUES ('$overskrift', '$kategori', '$personer', '$tid', '$pris', '$ingredienser', '$tilberedning', '$serveringsforslag', '$tilbehor', '$tips', '$pynt', '$fryseegnet', '$historie', '$kj', '$kcal', '$check1', '$check2', '$loginid')");
$_SESSION["opskriftid"] = mysql_insert_id();
header("Location: valg.php");
exit;
}
?>
Valg.php (siden mellem indtast og upload, egentlig bare en pæn side til at vælge næste handling)
http://anakin.dk/kogebogen/valg.phpUpload.php
<?php
$max_fil_storelse = "1024000"; // i bytes
$fil_path = $_SERVER['DOCUMENT_ROOT'] . "/b/kogebogen/opskrifter";
function form() {
?>
<table width="100%" border="0">
<tr>
<td><? echo $_SESSION['opskriftid']; ?>
Nedenfor kan du vælge om du vil tilføje et billede som vil
blive vist sammen med din opskrift. Jeg gør opmærksom på
at billedet skal opfylde kravene om højde og bredde (120 x 120
pixels).
Når du har gennemført denne handling, bliver du sendt
til en ny side hvorfra du kan vælge hvad der så skal ske.
</td>
</tr>
</table>
<form method="POST" enctype="multipart/form-data" action="<? echo $PHP_SELF ?>">
<table width="100%" border="0">
<tr>
<td><b>Tilføj billede</b></td>
</tr>
<tr>
<td><hr></td>
</tr>
<tr>
<td align="center"><input type="file" name="filen" size="36" id="submit"></td>
</tr>
<tr>
<td align="center"><input type="submit" value="Upload" name="upload" id="submit">
<input type="reset" value="Nulstil" name="reset" id="reset"></td>
</tr>
</table>
</form>
<?
}
function imageresize($sourcefile,$maxwidth,$maxheight,$destinationfile=false)
{
$types=Array();
$types[1]='gif';
$types[2]='jpeg';
$types[3]='png';
$types[6]='wbmp';
list($width,$height,$type)=getimagesize($sourcefile);
$type_name=$types[$type];
$imagecreatefromtype='imagecreatefrom'.$type_name;
$imagetype='image'.$type_name;
if(!function_exists($imagecreatefromtype) || !function_exists($imagetype))
{
return false;
}
if($img_src=$imagecreatefromtype($sourcefile))
{
$ratio_height=$maxheight/$height;
$ratio_width=$maxwidth/$width;
$ratio=min($ratio_width,$ratio_height);
$newwidth=$width*$ratio;
$newheight=$height*$ratio;
$img_dst=imagecreatetruecolor($newwidth,$newheight);
imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
if($destinationfile==false)
{
$imagetype($img_dst);
}
else
$imagetype($img_dst,$destinationfile);
imagedestroy($img_dst);
return true;
}
else
{
return false;
}
}
function upload() {
global $fil_path;
$fil_path_temp = $fil_path . "/temp" . $_FILES['filen']['name'];
if (!@copy($_FILES['filen']['tmp_name'],$fil_path_temp)) { $error == "Der er sket en fejl"; }
if(!eregi(".jpg$|.jpeg$", $fil_path_temp)) { $error = "Det er ikke en jpg fil !"; }
if ($error != "") {
echo "<center><b>Advarsel!</b> $error</center>";
form();
} else {
$billede_max_bredde = "120";
$billede_max_hojde = "120";
$storrelse = GetImageSize($_FILES['filen']['tmp_name']);
if (($storrelse[0] > $billede_max_bredde)or($storrelse[1] > $billede_max_hojde)) {
imageresize($fil_path_temp, 120, 120, $fil_path_temp);
}
$filnummer = $_SESSION['opskriftid'];
mysql_query("UPDATE kogebog_opskrifter SET billede='1' WHERE opskriftid='$filnummer'");
$endeligt_navn = $fil_path . "/" . $filnummer . ".jpg";
rename($fil_path_temp, $endeligt_navn);
echo "Billedet er uploadet";
}
}
### Start koden ####
if (isset($_REQUEST['upload'])) {
upload();
} else {
form();
}
// header("Location: /kogebogen/");
?>
Med venlig Hilsen Frank
http://anakin.dkJeg giver ikke point for opgavens størrelse, men for hjælpen der ydes..