PDA

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



tarsiran
یک شنبه 30 خرداد 1389, 13:03 عصر
سلام دوستای بامرام

دستم به دامنتون کمکم کنید

کد زیر رو یکی از دوستان واسم نوشته که بوسیله اون در پست های سایتم عکسها بطور خودکار منتقل میشن به هاست خودم و خوب کد بسیار خوبیه البته واسه من که فضای زیادی دارم خوبه اما مشکل اینه که اگه عکسی که میخواد آپلود شه هم اسمش وجود داشته باشه دیگه آپلود نمیشه و اون عکس قبلیو میاره و همین باعث شده کلی از پست ها سایت من به هم بریزه میخوام یه بزرگواری کنید کد رو واسم ادیت کنید که مثلا چک کنه اسم عکسو اگه نبود هم اسمش که عادی اپلود کنه اما اگه بود مثلا یه اسم رندوم بده بهش و آپلود کنه (البته نه اینکه هربار بخواد 1 عکس با 1 اسم رندوم بسازه چون پدر سرور در میاد اینطوری) یه بزرگوار بتونه کد و ادیت کنه 1 دنیا ممنون میشم


<?
//گرفتن عنوان و خود مطلب ;
//$file_id=$_GET['file_id'];
//$query ="SELECT * from _files WHERE file_id='$file_id' ";
//$result=mysql_query($query)or die("Query failed.line: ".__line__." file: ".__file__);
$update = mysql_query( "UPDATE _files SET hits=hits+1 WHERE file_id = '$file_id' ")or die("Query failed.line: ".__line__." file: ".__file__);
//$k= mysql_query("select count(file_id) from _files")or die("Query failed.line: ".__line__." file: ".__file__);
//$p = mysql_fetch_row($k);
//$result_array = mysql_fetch_array($result);
//$file_id=$result_array[file_id];
$file_name = $file_result_array[file_name];
$file_desc = $file_result_array[file_desc];
$file_time = $file_result_array[file_time];
$file_catid = $file_result_array[file_catid];
$file_creator = $file_result_array[file_creator];
$hits = $file_result_array[hits];
$new_file_name = str_replace(' ', '-', $file_name);
$new_file_name = str_replace('.', '-',$new_file_name );
//mysql_free_result($k);
//mysql_free_result($result);
$miladi = "$file_time";
$shamsi = jdate("l j F Y", strtotime($miladi));
preg_match_all('/\img[^>]+/i',$file_desc,$imgtags);
$tempArr = array();
$tempArr = $imgtags;
foreach ($imgtags[0] as $key => $imgg)
{
$imgUrl = str_between($imgg, "src=\"", "\"");$imgName = "";
$in = strlen($imgUrl) - 1;
while ($imgUrl[$in]!='/')
{
$imgName = $imgUrl[$in].$imgName;
$in--;
}
$imgExt="";
$in2 = strlen($imgName) - 1;
while ($imgName[$in2]!='.')
{
$imgExt = $imgName[$in2].$imgExt;
$in2--;
}

/*$handle = fopen('uploaded/count.txt','a+');
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
$contents++;
fwrite($handle,$contents);
fclose($handle);
*/
$rndNumber = ""; // rand(0,9999999999);
$imgName = "pc".$rndNumber."_".$imgName;
//$oldName= $imgName;
switch (strtolower($imgExt)) {
case "jpg":
{
if (!file_exists('uploaded/'.$imgName))
{
$src = imagecreatefromjpeg($imgUrl);
$width = imagesx($src); $heigth = imagesy($src);
$new_width =$width; $new_heigth = $heigth;
$dst = imagecreatetruecolor($new_width,$new_heigth); imagecopyresampled($dst,$src,0,0,0,0,$new_width,$n ew_heigth,$width,$heigth); $imgName = str_replace("%20","-",$imgName); imagejpeg($dst,'uploaded/'.$imgName,100);
imagedestroy($dst);
}
$host = substr($imgUrl, 0, $in+1);
$imgtags[0][$key] = str_replace($host,"http://www.pcparsi.com/uploaded/pc".$rndNumber."_",$imgtags[0][$key]); $imgtags[0][$key] = str_replace("%20","-",$imgtags[0][$key]);

}
break;
case "png":
{
if (!file_exists('uploaded/'.$imgName))
{
$src = imagecreatefrompng($imgUrl);
$width = imagesx($src);
$heigth = imagesy($src);
$new_width =$width;
$new_heigth = $heigth;

$dst = imagecreatetruecolor($new_width,$new_heigth);
imagecopyresampled($dst,$src,0,0,0,0,$new_width,$n ew_heigth,$width,$heigth);
$imgName = str_replace("%20","-",$imgName);
imagepng($dst,'uploaded/'.$imgName,100);
imagedestroy($dst);
}
$host = substr($imgUrl, 0, $in+1);
$imgtags[0][$key] = str_replace($host,"http://www.pcparsi.com/uploaded/pc".$rndNumber."_",$imgtags[0][$key]); $imgtags[0][$key] = str_replace("%20","-",$imgtags[0][$key]);
}
break;
case "gif":
{
if (!file_exists('uploaded/'.$imgName))
{
$src = imagecreatefromgif($imgUrl);
$width = imagesx($src);
$heigth = imagesy($src);
$new_width =$width;
$new_heigth = $heigth;

$dst = imagecreatetruecolor($new_width,$new_heigth);
imagecopyresampled($dst,$src,0,0,0,0,$new_width,$n ew_heigth,$width,$heigth);
$imgName = str_replace("%20","-",$imgName);
imagegif($dst,'uploaded/'.$imgName,100);
imagedestroy($dst);
}
$host = substr($imgUrl, 0, $in+1);
$imgtags[0][$key] = str_replace($host,"http://www.pcparsi.com/uploaded/pc".$rndNumber."_",$imgtags[0][$key]); $imgtags[0][$key] = str_replace("%20","-",$imgtags[0][$key]);
}
break;
}
}
$altf = create_function('$n','global $file_name;return "$n title=\"$file_name\" alt=\"$file_name\"";');
foreach($imgtags[0] as $onetag){$alltags[]=$altf($onetag);}
$file_desc=str_replace($tempArr[0],$alltags,$file_desc);
?>

rapidpich
یک شنبه 30 خرداد 1389, 13:13 عصر
چقدر Php بلدی؟



if (file_exists('uploaded/'.$imgName))*
{
$imgName = time();*
}*
$src = imagecreatefromjpeg($imgUrl);
$width = imagesx($src); $heigth = imagesy($src);
$new_width =$width; $new_heigth = $heigth;
$dst = imagecreatetruecolor($new_width,$new_heigth); imagecopyresampled($dst,$src,0,0,0,0,$new_width,$n ew_heigth,$width,$heigth); $imgName = str_replace("%20","-",$imgName); imagejpeg($dst,'uploaded/'.$imgName,100);
imagedestroy($dst);
} ------------> این خط باید پاک بشه *
$host = substr($imgUrl, 0, $in+1);
$imgtags[0][$key] = str_replace($host,"http://www.pcparsi.com/uploaded/pc".$rndNumber."_",$imgtags[0][$key]); $imgtags[0][$key] = str_replace("%20","-",$imgtags[0][$key]);

}


این فقط برای jpg هست برای بقیه رو خودت درست کن خطهای با * رو دستکاری کردم * هارو حذف کن

tarsiran
یک شنبه 30 خرداد 1389, 13:26 عصر
چقدر Php بلدی؟



if (file_exists('uploaded/'.$imgName))*
{
$imgName = time();*
}*
$src = imagecreatefromjpeg($imgUrl);
$width = imagesx($src); $heigth = imagesy($src);
$new_width =$width; $new_heigth = $heigth;
$dst = imagecreatetruecolor($new_width,$new_heigth); imagecopyresampled($dst,$src,0,0,0,0,$new_width,$n ew_heigth,$width,$heigth); $imgName = str_replace("%20","-",$imgName); imagejpeg($dst,'uploaded/'.$imgName,100);
imagedestroy($dst);
} ------------> این خط باید پاک بشه *
$host = substr($imgUrl, 0, $in+1);
$imgtags[0][$key] = str_replace($host,"http://www.pcparsi.com/uploaded/pc".$rndNumber."_",$imgtags[0][$key]); $imgtags[0][$key] = str_replace("%20","-",$imgtags[0][$key]);

}



این فقط برای jpg هست برای بقیه رو خودت درست کن خطهای با * رو دستکاری کردم * هارو حذف کن


داداش گل این کدی که شما ادیت کردی دقیقا چکار میکنه میخوام ببینم همونیه که میخوام یا نه آخه پی اچ پی زیاد مسلط نیستم

tarsiran
یک شنبه 30 خرداد 1389, 13:49 عصر
داداش کدی که دادی من واسه بخش jpg ها تست کردم کار نکرد و همون عکس قبلیو میاره به جای اینکه تغییر اسم بده عکسو و بیاره

الان این شکله کد من



<?
//گرفتن عنوان و خود مطلب ;
//$file_id=$_GET['file_id'];
//$query ="SELECT * from _files WHERE file_id='$file_id' ";
//$result=mysql_query($query)or die("Query failed.line: ".__line__." file: ".__file__);
$update = mysql_query( "UPDATE _files SET hits=hits+1 WHERE file_id = '$file_id' ")or die("Query failed.line: ".__line__." file: ".__file__);
//$k= mysql_query("select count(file_id) from _files")or die("Query failed.line: ".__line__." file: ".__file__);
//$p = mysql_fetch_row($k);
//$result_array = mysql_fetch_array($result);
//$file_id=$result_array[file_id];
$file_name = $file_result_array[file_name];
$file_desc = $file_result_array[file_desc];
$file_time = $file_result_array[file_time];
$file_catid = $file_result_array[file_catid];
$file_creator = $file_result_array[file_creator];
$hits = $file_result_array[hits];
$new_file_name = str_replace(' ', '-', $file_name);
$new_file_name = str_replace('.', '-',$new_file_name );
//mysql_free_result($k);
//mysql_free_result($result);
$miladi = "$file_time";
$shamsi = jdate("l j F Y", strtotime($miladi));
preg_match_all('/\img[^>]+/i',$file_desc,$imgtags);
$tempArr = array();
$tempArr = $imgtags;
foreach ($imgtags[0] as $key => $imgg)
{
$imgUrl = str_between($imgg, "src=\"", "\"");$imgName = "";
$in = strlen($imgUrl) - 1;
while ($imgUrl[$in]!='/')
{
$imgName = $imgUrl[$in].$imgName;
$in--;
}
$imgExt="";
$in2 = strlen($imgName) - 1;
while ($imgName[$in2]!='.')
{
$imgExt = $imgName[$in2].$imgExt;
$in2--;
}
 
/*$handle = fopen('uploaded/count.txt','a+');
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
$contents++;
fwrite($handle,$contents);
fclose($handle);
*/
$rndNumber = ""; // rand(0,9999999999);
$imgName = "pc".$rndNumber."_".$imgName;
//$oldName= $imgName;
switch (strtolower($imgExt)) {
case "jpg":
{
if (file_exists('uploaded/'.$imgName))
{
$imgName = time();
}
$src = imagecreatefromjpeg($imgUrl);
$width = imagesx($src); $heigth = imagesy($src);
$new_width =$width; $new_heigth = $heigth;
$dst = imagecreatetruecolor($new_width,$new_heigth); imagecopyresampled($dst,$src,0,0,0,0,$new_width,$n ew_heigth,$width,$heigth); $imgName = str_replace("%20","-",$imgName); imagejpeg($dst,'uploaded/'.$imgName,100);
imagedestroy($dst);
$host = substr($imgUrl, 0, $in+1);
$imgtags[0][$key] = str_replace($host,"http://www.pcparsi.com/uploaded/pc".$rndNumber."_",$imgtags[0][$key]); $imgtags[0][$key] = str_replace("%20","-",$imgtags[0][$key]);

}
 
break;
case "png":
{
if (!file_exists('uploaded/'.$imgName))
{
$src = imagecreatefrompng($imgUrl);
$width = imagesx($src);
$heigth = imagesy($src);
$new_width =$width;
$new_heigth = $heigth;
 
$dst = imagecreatetruecolor($new_width,$new_heigth);
imagecopyresampled($dst,$src,0,0,0,0,$new_width,$n ew_heigth,$width,$heigth);
$imgName = str_replace("%20","-",$imgName);
imagepng($dst,'uploaded/'.$imgName,100);
imagedestroy($dst);
}
$host = substr($imgUrl, 0, $in+1);
$imgtags[0][$key] = str_replace($host,"http://www.pcparsi.com/uploaded/pc".$rndNumber."_",$imgtags[0][$key]); $imgtags[0][$key] = str_replace("%20","-",$imgtags[0][$key]);
}
break;
case "gif":
{
if (!file_exists('uploaded/'.$imgName))
{
$src = imagecreatefromgif($imgUrl);
$width = imagesx($src);
$heigth = imagesy($src);
$new_width =$width;
$new_heigth = $heigth;
 
$dst = imagecreatetruecolor($new_width,$new_heigth);
imagecopyresampled($dst,$src,0,0,0,0,$new_width,$n ew_heigth,$width,$heigth);
$imgName = str_replace("%20","-",$imgName);
imagegif($dst,'uploaded/'.$imgName,100);
imagedestroy($dst);
}
$host = substr($imgUrl, 0, $in+1);
$imgtags[0][$key] = str_replace($host,"http://www.pcparsi.com/uploaded/pc".$rndNumber."_",$imgtags[0][$key]); $imgtags[0][$key] = str_replace("%20","-",$imgtags[0][$key]);
}
break;
}
}
$altf = create_function('$n','global $file_name;return "$n title=\"$file_name\" alt=\"$file_name\"";');
foreach($imgtags[0] as $onetag){$alltags[]=$altf($onetag);}
$file_desc=str_replace($tempArr[0],$alltags,$file_desc);
?>

tarsiran
یک شنبه 30 خرداد 1389, 15:51 عصر
یه رفیق با مرام پیدا نمیشه کمک کنه؟ خیلی ضروریه ... :گریه:

rapidpich
یک شنبه 30 خرداد 1389, 15:55 عصر
این خط رو خودت اینجوری کردی؟


$rndNumber = ""; // rand(0,9999999999);همین همه چیو خراب کرده
اگه به جای این بنویسی
PHP]$rndNumber = time(); // rand(0,9999999999);[/php]


همه چی درست میشه.تغییرات من رو هم به حالت اولش برگردون. در غیر اینصورت کثافت کاری داره:
این خط رو بکن:



$imgtags[0][$key] = str_replace($host,"http://www.pcparsi.com/uploaded/pc".$rndNumber."_",$imgtags[0][$key]);




$imgtags[0][$key] = str_replace($imgtags[1][$key],"http://www.pcparsi.com/uploaded/".$imgName,$imgtags[0][$key]);
این خط :


$imgName = time();
میشه


$imgName = time() . '.jpg';


preg_match_all('/\img[^>]+/i',$file_desc,$imgtags);

میشه:


preg_match_all('/<img[^>]*?src="([^"]+)"/i',$file_desc,$imgtags);



ّبین درست میشه؟

Reza1607
یک شنبه 30 خرداد 1389, 23:11 عصر
من از این کد استفاده می کنم


$p=$filename;
$i=1;
while (1){
if(file_exists('../upload/img/'.$p)){//check not exists file
$p=$i."_".$filename;
}else{
if($i!=1)
$filename=($i-1)."_".$filename;
break;
}
$i++;
}
کارش هم به این صورته که اول چک می کنه اگه فایل نبود که هیچی فایل رو با همون نام ذخیره می کنه ولی اگه وجود داشته باشه یک اسم براش درست می کنه به این صورت

1_filename.jpg
و اگه این نام هم بود عدد یک میشه 2 و دوباره چک میشه و تا زمانی که یک نام جدید پیدا نکنه حلقه تکرار میشه

funpatogh
پنج شنبه 03 تیر 1389, 01:06 صبح
preg_match_all('/<img[^>]*?src="([^"]+)"/i',$file_desc,$imgtags);

این پترن آدرس عکس رو ناقص میده بیرون میشه صحیحش رو بگزارید
تگ img کامل بسته نمیشه و < آخرش رو نداره

future2010
پنج شنبه 03 تیر 1389, 13:35 عصر
preg_match_all('/<img[^>]*?src="([^"]+)"/i',$file_desc,$imgtags);
این پترن آدرس عکس رو ناقص میده بیرون میشه صحیحش رو بگزارید
تگ img کامل بسته نمیشه و < آخرش رو نداره




preg_match_all('/<img.*?src=["|\']?([^"|\']*)["|\']?.*?>/',$file_desc,$imgtags);

ravand
یک شنبه 16 آبان 1389, 00:25 صبح
استفاده از این کد ها خیلی ساده تره:

$hast=true;
while($hast)
{
if(file_exists($target_path))
$target_path="1".$target_path;
else
$hast=false;
}
:لبخند:

alonemm
یک شنبه 16 آبان 1389, 09:46 صبح
خب شما میتونید اول عکس رو چک کنید اگه وجود داشت به یک اسم دیگه تغییر بده.
برای اینکار هم از ترکیب تاریخ جاری و ساعت و دقیقه و سانیه و صدم ثانیه استفاده کنید.

farhadsoft
یک شنبه 16 آبان 1389, 10:29 صبح
یه field در mysql تعریف کن که کلید اصلی باشه و هر دفعه که تصویر آپلود میشه
نام تصویر با شماره ی این field یکی باشه