PDA

View Full Version : مشکل با ذخیره و نمایش عکس در php (ذخیره مسیر یا خود عکس)



xman_dj
شنبه 27 آذر 1389, 00:42 صبح
با سلام و خسته نباشید
من یک صفحه دارم که مربوط به کالا میشه و تو اون مشخصاتی مثل نام کالا قسمت و .... و در آخر عکس از کاربر میگیرم
-
سوال من اینجا مطرح میشه که
من سورس مربوط به ذخیره عکس تو mysql رو پیدا کردم و سورس مربوط به نمایش اون
ولی تو سورس نمایش اون تو خط header ( 'Content-type: image/jpg' ); مشکل پیدا میکنم یعنی سورس تو یک صفحه خالی جواب میده ولی وقتی با کد های اچ تی ام ال ادغام میکنم ایراد پیدا میکنه
فایل آپلود و نمایش اونو آپلود کردم
-
اول از همه میخواستم فقط مسیر عکسو ذخیره کنم و تو نمایش از اون استفاده کنم ولی سورس مربوطه اونو پیدا نکردم تا کمکی بهم بکنه
-

در کل میخوام عکس + چند فیلد رو ذخیره و نمایش بدم ولی اینا چون به صورت کالا هستن میخوام تو یک حلقه این کارو بکنم
از دوستان اگه منو راهنمایی کنن خیلی ممنون میشم کارم واقعا گیره نحوه ذخیره مهم نیست زیاد برام یعنی هم ذخیره مسیر و نمایش از روی مسیر عکس و یا ذخیره و نمایش از پایگاه داده کارمو راه میندازه
این سورس رو که دادم کارش فقط نمایش یک کالاست و وقتی با یک کد html ادغام میشه جواب نمیده اگه اینم حل کنین میشه
فکر کنم مشکل کد اینجا باشه

header ( 'Content-type: image/jpg' );
نمایش میدم وقتی اینو استفاده نمیکنم ولی اون موقع هم کد عکسو نشون میده بجای عکس مثل اینکه با note pad باز کردم
:افسرده:

morteza_naderloo
شنبه 27 آذر 1389, 01:43 صبح
من تازه کارم امابه نظرم تنها جایی که مشکل داشت صفحه نمایش بودکه فکر کنم اینجوری درست شد .



<?php

$username = "root";
$password = "123456";
$host = "127.0.0.1";
$database = "dbphp";


@ mysql_connect ( $host , $username , $password ) or die( "Can not connect to database: " . mysql_error ());

@ mysql_select_db ( $database ) or die( "Can not select the database: " . mysql_error ());

$id = $_GET [ 'id' ];

if(!isset( $id ) || empty( $id )){
die( "Please select your image!" );
}else{

$query ="SELECT * FROM tbl_images WHERE id="\$id\" ";
$result = mysql_query ($query);
$out=mysql_fetch_array($result,MYSQL_ASSOC)){
echo $out[image];

}

?>
بعضی وقتا فوزولی تو اینکارا خوبه ؟

راستی فکر کنم اینجوری SQL INJ بشی .

xman_dj
شنبه 27 آذر 1389, 02:04 صبح
داداش سورس درسته ولی وقتی کد html اظافه میکنم کار نمیکنه
راستی اینو همینطوری سیو نمیکنم یعنی تغییر میدم
اگه امکانش هست شما میتونی این کدو بندازی تو یک جدول تا ببینی کار میکنه یا نه من که هر کاری کردم وقتی کد html نوشتم کار نکرد header ( 'Content-type: image/jpg' ); این قسمت فکر کنم تغییری در صفحه انجام میده
راستی مشکل sql inject هم نیست چون پروژه دانشگاهه ....آپلود نمیکنم
*************
و یک سوال دیگه هم داشتم تو فرم زیر یک فایلی انتقال میدم از کامپیوترم و در صفحه uploader اسم فایل، نوع فایل و .. رو از روی آرایه $_FILES["file"]["name"] به دست میارم
سوالم اینجا پیش میاد که اگه بخوام مسیری که عکس از کامپیوتر طرف انتخاب شده رو نیز به دست بیارم باید چیکار کنم تو آرایه بالا اسمی برای این نیز در نظر گرفته شده؟


<html>
<body>

<form action="uploader.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>

-----------------------------------------------------------------------------


echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"]. "<br />";;

xman_dj
شنبه 27 آذر 1389, 15:28 عصر
کسی نیست یک راهنمایی کنه:افسرده:

eshpilen
شنبه 27 آذر 1389, 22:15 عصر
سوالم اینجا پیش میاد که اگه بخوام مسیری که عکس از کامپیوتر طرف انتخاب شده رو نیز به دست بیارم باید چیکار کنمفکر نکنم اجازهء این کار رو داشته باشی. از نظر Security و Privacy برای کاربر مشکل داره.
البته اسم خود فایل تاجایی که یادمه ارسال میشه.

eshpilen
شنبه 27 آذر 1389, 23:20 عصر
اگه امکانش هست شما میتونی این کدو بندازی تو یک جدول تا ببینی کار میکنه یا نه من که هر کاری کردم وقتی کد html نوشتم کار نکرد header ( 'Content-type: image/jpg' ); این قسمت فکر کنم تغییری در صفحه انجام میده
قربونت وقتی هدر Content-type: image/jpg میفرستی یعنی داری به کلاینت میگی چیزی که دریافت خواهد شد بایتهای یک تصویر از نوع jpg هست. توی تصویر JPG هم که دیگه کد HTML نداره!
اگر شما میخوای کد HTML هم بدی باید یک تگ img توی کدهای HTML بذاری و src اون رو به فایل PHP ای که محتوی عکس رو میفرسته تنظیم کنی.

xman_dj
دوشنبه 29 آذر 1389, 01:31 صبح
داداش متوجه نشدم تو مثال بالا که دادم یک صفحه برای نمایش عکس دارم که کد html هم توش نمیشه نوشت چون هدر فایل از نوع عکس انتخاب شده
الان من باید کدوم صفحه رو تغییر بدم
اگه میشه یک مثال به صورت سورس بزنین
یک دنیا ممنون

rezarss
دوشنبه 29 آذر 1389, 02:01 صبح
برای درج آدرس عکس در mysql از این کد استفاده کن:

$imgpath="http://yourdomain.com/img/". $_FILES["imageurl"]["name"];

mysql_query("INSERT INTO `dbname`.`table` (

`image url`
)
VALUES (
`$imgpath`
)");برای نمایش عکس با php هم از این کد استفاده کن:


$data = mysql_query("SELECT * FROM table")
or die(mysql_error());

while($info = mysql_fetch_array( $data ))
{
$pic=$info['image url'];
echo "<table width=\"856\" height=\"176\" border=\"0\" align=\"center\">\n";
echo " <tr>\n";
echo "<td width=\"210\"><div align=\"center\"><img src=\"$pic\" width=\"198\" height=\"170\" /></div></td>\n";
</tr>\n";
echo "</table>\n";
}

parselearn
دوشنبه 29 آذر 1389, 05:53 صبح
شما id تصوير رو ارسال ميكنيد به فايل show.php اون خروجي ميده
مثال:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<img src="show.php?id=2" />
</body>
</html>