Är tacksam ifall någon kan hjälpa mig att felsöka (kanske också optimera/säkra) följande script.
Får bara "ERROR" när jag försöker ladda upp bilder.
<?php
if(isset($_REQUEST['root_path'])){
// get the document root - for use on include files
$root_path = $_SERVER['DOCUMENT_ROOT'];
}
// get the document root - for use on include files
$root_path = $_SERVER['DOCUMENT_ROOT'];
// include the config file
include("$root_path/adminpanel/includes/config.php");
// Include the connection to the database
include("$root_path/adminpanel/includes/connection.php");
// Field Names Used
// rec_id
// date_added
// member
// photo_file
// photo_thumb
// description
//safe HTML for the description
//$description
$description = strip_tags($description, $allowed_tags);
if (is_uploaded_file($item_pic)) {
$image_name = stripslashes($item_pic_name);
//print("Image Name: $image_name <br>");
$pattern = "[^a-zA-Z0-9\.]";
$image_name = ereg_replace($pattern, "", $image_name);
$path = "../../images/gallery/";
//print("Path: $path <br>");
$destination = "../../images/gallery/$image_name";
//print("Destination: $destination <br>");
$num = 1;
while (file_exists($destination)){
$num++; // if previous file name existed then tRy another number+_+filename
$image_name = $num . "_" . $image_name;
$destination = $path.$image_name;
}
//print("Final Destination: $destination <br>");
$thm_name = "thm_" . $image_name;
//print("Thumb Name: $thm_name <br>");
$thm_name_2 = "thm_300_" . $image_name;
//print("Thumb Name 2: $thm_name_2 <br>");
copy($item_pic, $destination) or die("Picture upload failed");
// this creates the thumbnail
$infile = $path . $image_name;
//print("Infile $infile <br>");
$outfile = $path . $thm_name;
//print("Outfile $outfile <br>");
$outfile2 = $path . $thm_name_2;
//print("$outfile2");
@exec("/usr/bin/convert -sample 100x100 $infile $outfile");
@exec("/usr/bin/convert -sample 300x300 $infile $outfile2");
// get the dimensions of the item's picture
list($width, $height, $type, $attr) = getimagesize($infile);
// get the image width
$image_width=$width;
//print("Image Width: $image_width <br>");
// get the image height
$image_height=$height;
//print("Image Height: $image_height <br>");
// get the image type
$image_type=$type;
//print("Image Type: $image_type <br>");
// get the DATA size of the file
$image_data_size = filesize($infile);
//print("Image Data Size: $image_data_size <br>");
$image_location="../../images/gallery/$image_name";
//print("Image Location: $image_location <br>");
// define the query to put all this crap into the database
$query = "INSERT INTO photos
(
date_added,
member,
photo_file,
photo_thumb,
photo_thumb2,
image_width,
image_height,
image_type,
image_data_size,
image_location,
description
)
values (
NOW(),
'$member',
'$image_name',
'$thm_name',
'$thm_name_2',
'$image_width',
'$image_height',
'$image_type',
'$image_data_size',
'$image_location',
'$description'
)";
//print("$query");
//run the query
mysql_query($query, $link) or die (mysql_error());
//close the sql connection.
mysql_close($link);
//redirect back to control panel
header("location: ../index.php?success=addedpic");
exit;
}
else{
print("ERROR");
}
?>
Tack på förhand!
tydalMedlem sedan juni 20034 013 inlägg Det är alltså den här raden som inte funkar:
if (is_uploaded_file($item_pic))
Jag antar att det i stället ska stå:
if (is_uploaded_file($_POST['item_pic']))
tydal skrev:
Det är alltså den här raden som inte funkar:
if (is_uploaded_file($item_pic))
Jag antar att det i stället ska stå:
if (is_uploaded_file($_POST['item_pic']))
Hjälpte tyvärr inte.
Får fortfarande "ERROR". :(
Såhär ser ivarjefall tabellen ut:
CREATE TABLE `photos` (
`rec_id` int(7) NOT NULL auto_increment,
`date_added` date NOT NULL default '0000-00-00',
`member` varchar(255) NOT NULL default '',
`photo_file` varchar(255) NOT NULL default '',
`photo_thumb` varchar(255) NOT NULL default '',
`photo_thumb2` varchar(255) NOT NULL default '',
`description` mediumtext NOT NULL,
`image_width` varchar(255) NOT NULL default '',
`image_height` varchar(255) NOT NULL default '',
`image_type` varchar(255) NOT NULL default '',
`image_data_size` varchar(255) NOT NULL default '',
`image_location` varchar(255) NOT NULL default '',
PRIMARY KEY (`rec_id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
tydalMedlem sedan juni 20034 013 inlägg Det är fortfarande den raden det blir fel på. Kolla så att input-taggen med file verkligen heter item_pic och att du har enctype="multipart/form-data" på form-taggen.
fiddlerMedlem sedan juli 20023 617 inlägg Som Tydal påpekar är det något knas med $item_pic. Hur ser koden för uppladdningsformuläret ut?
De fyra första raderna efter <?PHP ser ganska överflödiga ut förresten...
tydal skrev:
Det är fortfarande den raden det blir fel på. Kolla så att input-taggen med file verkligen heter item_pic och att du har enctype="multipart/form-data" på form-taggen.
Här är formuläret, och det verkar stämma.
<?php
if(isset($_REQUEST['root_path'])){
// get the document root - for use on include files
$root_path = $_SERVER['DOCUMENT_ROOT'];
}
?>
<!--Begin The Form To Add A Photo To The Gallery -->
<div id="add_photos" class="form">
<form enctype="multipart/form-data" method="post" action="scripts/addphotos.php" id="addphotos_form">
<fieldset>
<legend>Add A Photo</legend>
<?php
// include the help file
include("$root_path/adminpanel/includes/helpfiles/help_photos.php");
?>
<div>
<label for="gallery_member">Member:</label>
<select id="gallery_member" name="member">
<option value="">Select Member</option>
<option value="All">Whole Band</option>
<?php
// we need a query to populate the options for the select menu
$query = "
SELECT
*
FROM
memberbios
ORDER BY
rec_id DESC
";
$result = mysql_query($query);
while ( $row = mysql_fetch_array($result)){
$name = $row['name'];
print ("<option value=\"$name\">$name</option>\n");
}
?>
</select>
</div>
<div>
<label for="gallery_file">Select A Photo:</label>
<input type="file" id="gallery_file" name="item_pic" />
</div>
<div>
<label for="gallery_description">Photo Description:</label>
<textarea name="description" id="gallery_description" rows="15" cols="30"></textarea>
</div>
<div>
<input type="submit" name="Submit" value="Submit" />
</div>
<div><a href="javascript:show('help_photos');">View Help</a></div>
</fieldset>
</form>
</div>
<!--End The Form To Add A Photo To The Gallery -->
tydalMedlem sedan juni 20034 013 inlägg Just ja, det ska ju vara filnamnet...
if (is_uploaded_file($_FILES['item_pic']['tmp_name'])) {
$image_name = stripslashes($FILES['item_pic']['name']);
tydal skrev:
Just ja, det ska ju vara filnamnet...
if (is_uploaded_file($_FILES['item_pic']['tmp_name'])) {
$image_name = stripslashes($FILES['item_pic']['name']);
Uppskattar verkligen hjälpen.
Nu fick jag:
Warning: copy(): Unable to access in /home/kunder/*****/*****/adminpanel/scripts/addphotos.php on line 52
Picture upload failed
Rad 52:
copy($item_pic, $destination) or die("Picture upload failed");
tydalMedlem sedan juni 20034 013 inlägg Webbservern har inte skrivbehörighet till den katalogen. Om du inte har möjlighet att logga in själv (ssh) och fixa det kan ditt ftp-program ha den möjligheten (typ "permissions" eller nåt). Sätt 777 (rwxrwxrwx) på den katalogen.
tydal skrev:
Webbservern har inte skrivbehörighet till den katalogen. Om du inte har möjlighet att logga in själv (ssh) och fixa det kan ditt ftp-program ha den möjligheten (typ "permissions" eller nåt). Sätt 777 (rwxrwxrwx) på den katalogen.
Hmm, ok...
Men katalogen (images) där alla bilder skall sparas, har redan rätt rättigheter (777).
Eller menar du någon annan katalog? :r
tydalMedlem sedan juni 20034 013 inlägg Byt ut $item_pic mot $_FILES['item_pic']['tmp_name']
tydalMedlem sedan juni 20034 013 inlägg På raden där det är fel (52).
tydal skrev:
På raden där det är fel (52).
Kanon! Nu gick det att ladda upp bilden.
Fast den sparades UTAN filändelse (.jpg). Sparades som "2_" . (utan "")