لا تعتذر
فانت في صلب الموضوع
والكود الذي كتبته سيتم اعتماده بعد اجراء بعض التعديلات البسيطة
شكرا لك ولكل من ساعدني
لا تعتذر
فانت في صلب الموضوع
والكود الذي كتبته سيتم اعتماده بعد اجراء بعض التعديلات البسيطة
شكرا لك ولكل من ساعدني
__________________
ابصم
نعم.. هما متطابقان..
لكن الدالة empty تبحث عن بمدى أوسع.. (الصفر أو False أو الفراغ أو فراغ مصفوفة.. الخ)
لا توجد دالة مباشرة..هل توجد دالة تعطيني فولس إذا كان المتغير فراق ؟
يعني نفس هذا السطر
أو اقوم بتعريف دالة بنفسي إذا كانت غير موجودةكود PHP:
$url!=""
لكن يمكنك نفي الدالة بكل بساطة لتصبح..
كود PHP:
if( !empty($url) ){
print "URL Not Empty";
}
^__^
بالتوفيق...
شكرا لك الآن اصبح كتابه البرنامج اسهل
ما رايكم الآن في البرنامج بعد اضافة التاكد من وجود الملف
الدالة fopen مع الامر W تقوم باستبدال الملف أو إنشائه
لذلك وضعت الشرط إذا كان الملف موجود لا يستبدل الملف إلا بعد الموافقةكود PHP:
$fopen=@fopen("$namefile","w")
كود PHP:
// اذا الملف موجود ولم تتم الموافقة على الاستبدال يتم ايقاف البرنامج
if(file_exists($namefile) && empty($changefile) ){
echo"لم يتم نقل الملف لوجود ملف آخر بنفس الاسم";
كود PHP:
<?php
$url=trim($_POST["url"]); // عنوان الملف المطلوب تحميلة على الموقع
$namefile=trim($_POST["namefile"]); // اسم الملف المطلوب تحميلة على الموقع (حفظ باسم)
$changefile=$_POST["changefile"]; // تحديد الكتابة على الملف إذا كان موجود
switch($_SERVER['REQUEST_METHOD'])// التحقق إذا قام المستخدم بارسال المعلومات
{
case"POST":
// التحقق من ادخال عنوان الملف واسم الملف
if( !empty($url) && !empty($namefile) ){
// التحقق إن كان عنوان الملف صحيح ويمكن نقلة
if( $file=@implode(file($url)) ){
// اذا الملف موجود ولم تتم الموافقة على الاستبدال يتم ايقاف البرنامج
if(file_exists($namefile) && empty($changefile) ){
echo"لم يتم نقل الملف لوجود ملف آخر بنفس الاسم";
}else{
// اذا تم انشاء الملف
if( $fopen=@fopen("$namefile","w") ){
// اذا تمت الكتابة في الملف
if( fwrite($fopen,$file) ){
echo "ممتاز لقد تم حفظ الملف بنجاح";
}else{
echo "هناك خطأ في حفظ الملف";
}
fclose($fopen);
}else{
echo "عفوا لم يتم انشاء هذا الملف ";
}
}
}else{
echo "عفوان عنوان الصفحة غير صحيح او ان هناك خطأ مجهول";
}
}else{
echo "يجب كتابة عنوان الملف واسم الملف";
}
break;
default:
echo "اهلا وسهلا بك في برنامج نقل الملفات";
break;
}
?>
__________________
ابصم
جميل
ايضا يجب ازالة حقل اسم الملف وجعله اتوماتيكي يأخذ اسم الصفحة ويحفظه
ملاحظة:
لماذا تصر على اقحام switch مع انك تستطيع كتابة هذا البرنامج بدونه ويكون افضل
ربما لا أريد أن أجعل الملف بنفس الاسم او ان اسم الملف موجود مسبقا لكن جائتني فكرة وهي إن لم يتم إدخال اسم الملف سيتم الحفظ بنفس الاسم
لكن لم أجد الدالة التي تخرج لي اسم الملف مع امتداده من خلال رابط خارجي وما زلت ابحث عن هذه الدالة
ولدي افكار كثيرة لتطبيقها على البرنامج وسيتم ذكرها في حال تطبيقها بنجاح
وساحاول ان اجعل البرنامج محاكي لطريقة تنزيل الملف على الكمبيوتر
لان switch عقدتني وتعلمتها بصعوبه :funny: تقدر تقول عني عنيد :court:
وعلى فكرة هذا البرنامج مشروع لتعلم اللغة وبعدها أدخل في المشروع إلى في راسي
التعديل الأخير تم بواسطة قمر الشعراء ; 28-02-2009 الساعة 03:56 PM
__________________
ابصم
السلام عليكم ورحمة الله وبركاته
استخدم basenameلكن لم أجد الدالة التي تخرج لي اسم الملف مع امتداده من خلال رابط خارجي وما زلت ابحث عن هذه الدالة
إذا كان الملف من نوع PHP مثلاً ويحوي بعض أوامر $_GET يمكنك فلترتها باستخدام eregكود PHP:
$url = 'http://www.name.com/category/subg/file.txt';
print basename($url); // Prints file.txt
تحياتي
إضافة بسيطة..
يمكنك استخدام الدالة pathinfo وهي دالة متقدمة أكثر في استخراج النتائج..
والمخرج عبارة عن مصفوفة تحمل القيم التالية..
dirname..: وهي تعرض الدومين أو المسار إلى ما قبل اسم الملف
basename..: تعرض اسم الملف شامل للامتداد
extension..: تعرض الامتداد فقط
filename..: تعرض اسم الملف فقط
هي مثل سابقتها إذ ستحتاج لفلترة اسم الملف أو الامتداد لحذف أي زوائد أو إضافات لـ $_GET
===========
كما هنالك دالة أخرى تقوم بتفصيل اللنك تفصيلا شامللا.. وهي parse_url..
لمزيد من المعلومات..
PHP: parse_url - Manual
^__^
تحياتي
ما شاء الله عليك أخي PHP-Master02 هل عرفت هذه الدوال من خلال البحث أو هي عن طريق الخبرة
إذا كان عن طريق البحث فأخبرني كيف أبحث :shy:
مع العلم بحثي يعتمد على اللغة العربية وليس لدي لغة أخرى
شكرا لك اخي PHP-Master02
سيتم اختيار الانسب
__________________
ابصم
السلام عليكم
استخدمت من قبل الدالتين basename و parse_url في عدة برمجيات..
لكن لم أستخدم pathinfo .. إنما وجدتها في إحدى المرات في الدوال الخاصة بالتعامل مع الملفات..
إذا كنت تعرف ما تحبث عنه..
كل شيء موجود في الـ Manual الخاص باللغة..
لا داعي للذهاب إلى أبعد من ذلك..
PHP: Hypertext Preprocessor
بالتوفيق إن شاء الله...
تحياتي
الدالة basename يقتصر عملها على اخراج الملف مع امتدادة فقط لذلك لا تفيد
الدالة parse_url لم افهم عملها
الدالة pathinfo هي المناسبة لقد ساعدتني كثيرا في تطبيق الكثير من الافكار
الموقع Manual معروف لكن لا يساعدني كثيرا لانه ليس بالعربي ابحث عن الدوال به ثم ابحث عن الشرح في المواقع العربية لكي افهم استخدامها وهل ستفيدني هذه الدالة او لا
الدالة ereg حاولت معرفة طريقة عملها لكن بدون فائدة
لو كان لدي ملف واريد فلترته كيف اقوم بذلك مثال
هذا ملف NewsDetails.aspx?id=75906&language=ar
أو index.php?doWhat=showcook&cookid=186
تبدا الفلترة من علامة ؟ حتى النهاية
__________________
ابصم
السلام عليكم..
بالنسبة لأي نوع من البرمجة..
إذا كنت تجيد اللغة الإنجليزية فأكيد الاسفتادة منها بتكون أكثر بمرااااااحل..
أما لكيفية الفلترة..
الدالة ereg تستخدم للبحث أو الفلترة..كود PHP:
<?php
$link = "http://www.site.com/path1/folder2/NewsDetails.aspx?id=75906&language=ar";
// $out المتغير الذي سيحمل المخرج
$filter = eregi("([a-zA-Z0-9]+)\.([a-zA-Z0-9]+)\?",$link,$out);
print_r($out);
?>
الدالة تخرج بـ True أو False.. لكن يمكن تحديد اسم متغير ليحمل النتائج..
يحمل المتغير الذي قمنا بتحديده صيغة البحث.. ويقوم بتفصيل كل ما حددناهو في الـ pattern داخل المتغير كمصفوفة..
كود PHP:
$out[0]:: المطلوب البحث عنه
$out[1]:: اسم الملف
$out[2]:: امتداد الملف
تحياتي
شكرا لك سيتم اجراء الاختبارات على الدالة ليتم تحديد طريقة الاستخدام المناسبة
الآن ما رئيك بالبرنامج
تم اضافة التالي
1- إن لم يقم المستخدم بكتابة اسم الملف فسيتم نقل الملف بنفس الاسم
2- إذا قام المستخدم بكتابة اسم الملف ولم يكتب الامتداد يتم كتابه الامتداد تلقائي
3- إن ادخل المستخدم اسم الملف مع الامتداد سيتم التاكد من ان امتداد الملف المطلوب نقلة يطابق الامتداد المسجل في اسم الملف وعند الاختلاف يتم استبدال الامتداد الموجود في اسم الملف بالامتداد الموجود في عنوان الملف (( تخيل ان احد آخر توصل إلى البرنامج غير صاحب الموقع وقام بكتابة اكواد php داخل ملف txt وعند نقل الملف تم استبدال الامتداد من txt إلى php ))
بالتاكيد وصلت المعلومة
وإذا لم تصل المعلومة فهذا شرح آخر
فعند نقل ملف php من موقع لاخر باستخدام هذا البرنامج سيتم نقل الملف لكن الاكواد html
أما عندما يتم نقل ملف txt به اكواد php فسيتم نقل الملف دون تغيير في المحتوى فقط تغيير امتداد الملف وبهذه الطريقة ادخلت ملف php إلى الموقع بنجاح وهو يعمل لان الامتداد php ووالمحتوى كذلك
شوف هذا كود البرنامج بعد التعديل
سيتم تامين البرنامج باسم مستخدم وكلمة مرور لكن في مراحل متقدمة في البرنامج فانا لا اريد ان اقوم بتسجيل الدخول كلما اردت اختبار البرنامجكود PHP:
<?php
// المتغيرات
$changefile=$_POST["changefile"]; // تحديد الكتابة على الملف إذا كان موجود
// المتغيرات المتعلقة باسم الملف
$namefile=trim($_POST["namefile"]); // اسم الملف المطلوب تحميلة على الموقع (حفظ باسم)
$pnamefile=pathinfo($namefile); // دالة تقسيم الرابط
$dnamefile=$pnamefile['dirname']; // الرابط بدون اسم الملف
$bnamefile=$pnamefile['basename']; // اسم الملف مع الامتداد
$enamefile=$pnamefile['extension']; // امتداد الملف
$fnamefile=$pnamefile['filename']; // اسم الملف بدون امتداد
// المتغيرات المتعلقة بعنوان الملف
$url=trim($_POST["url"]); // عنوان الملف المطلوب تحميلة على الموقع
$purl=pathinfo($url); // دالة تقسيم الرابط
$durl=$purl['dirname']; // الرابط بدون اسم الملف
$burl=$purl['basename']; // اسم الملف مع الامتداد
$eurl=$purl['extension']; // امتداد الملف
$furl=$purl['filename']; // اسم الملف بدون امتداد
// بداية البرنامج
switch($_SERVER['REQUEST_METHOD'])// التحقق إذا قام المستخدم بارسال المعلومات
{
case"POST":
// التحقق من ادخال عنوان ملف صحيح
if( !empty($url) && !empty($eurl) ){
// التحقق إن كان عنوان الملف صحيح ويمكن نقلة
if( $file=@implode(file($url)) ){
// إذا لم يتم ادخال اسم الملف يتم حفظ الملف بنفس الاسم الاصلي
if( empty($namefile)){
$newnamefile=$burl;
// إذا تم ادخال اسم الملف يتم التاكد من تطابق الامتداد مع الملف الاصلي
}elseif($eurl==$enamefile){
$newnamefile=$namefile;
// إذا لم يتم تطابق الامتداد أو كتابته يتم تغييره أو كتابته
}else{
$newnamefile=$fnamefile.".".$eurl;
}
// اذا الملف موجود ولم تتم الموافقة على الاستبدال يتم ايقاف البرنامج
if(file_exists($newnamefile) && empty($changefile) ){
echo"لم يتم نقل الملف لوجود ملف آخر بنفس الاسم";
}else{
// اذا تم انشاء الملف
if( $fopen=@fopen("$newnamefile","w") ){
// اذا تمت الكتابة في الملف
if( fwrite($fopen,$file) ){
echo "ممتاز لقد تم حفظ الملف باسم $newnamefile";
}else{
echo "هناك خطأ في حفظ الملف";
}
fclose($fopen);
}else{
echo "عفوا لم يتم نقل هذا الملف ";
}
}
}else{
echo "عفوان عنوان الملف غير صحيح او ان هناك خطأ مجهول";
}
}else{
echo "يجب كتابة عنوان الملف";
}
break;
default:
echo "اهلا وسهلا بك في برنامج نقل الملفات";
break;
}
?>
نرحب باي اقتراحات
التعديل الأخير تم بواسطة قمر الشعراء ; 01-03-2009 الساعة 11:11 PM
__________________
ابصم
أخي PHP-Master02
بعد البحث والتحري تم إيجاد طريقة أفضل للفلترة
تمت اضافة السطر الاول والتغيير في السطر الثانيكود PHP:
$filterurl=explode("?",$url); // دالة لفلترة العنوان
$purl=pathinfo($filterurl['0']);// دالة تقسيم الرابط
إلى الان البرنامج يواجه بعض المشاكل
مثلا لو قام المستخدم بإضافة الرابط بهذه الطريقة http://www.swalif.net
سيتم اعتبار ان اسم الملف www.swalif.net
والامتداد net
واسم الملف بدون الامتداد www.swalif
الرابط بدون اسم الملف http:
وسيتم انشاء ملف باسم www.swalif.net إن لم يقم بكتابه اسم للملف
أما إذا قام بكتابة اسم الملف فسيكون الامتداد الخاص به هو net
لكن هذه المشكلة غير مهمه إن لم اجد لها حل لان المستخدم هو صاحب الموقع وعند نقل اي ملف لن يقوم بكتابه الرابط بهذه الطريقة
وان كتبها بهذه الطريقة فهي مشكلته :funny: وليست مشكلة البرنامج
قريبا مميزات اضافية
نتقبل اقتراحاتكم للبرنامج
ونتقبل نقدكم لطريقة كتابة الاكواد
التعديل الأخير تم بواسطة قمر الشعراء ; 02-03-2009 الساعة 01:34 PM
__________________
ابصم
السلام عليكم..
جميل جدا..
طلع من بالي فكرة explode..
بالتوفيق دائما..
بالنسبة لمشكلة كتابة العنوان..
امممممم.. :con2:
ما عندي حل معين في راسي حاليا..
لكن هذا أول حل وصلت له..
:1power:
استخدم خانتين منفصلتين عند إدخال عنوان الملف..
الأول:: نطاق الموقع (الدومين)
الثاني:: بقية العنوان..
مثلا إذا كان العنوان المراد جلبه هو..
الحقل الأول يتم إدراج فيه دومين سوالفكود:www.swalif.net/folder/page.php
والثاني يتم إدراج بقية العنوانكود:www.swalif.net
كود:folder/page.php
:eek2:
في أمان الله
لقيت الحل :app:
عندما يساوي المتغيرhttp: أو ftp: يتم ايقاف البرنامج ويخبره بان عنوان الملف غير صحيح :app:كود PHP:
$durl=$purl['dirname']; // الرابط بدون اسم الملف
لدي فكرة :eek2: إن تم تنفيذها سيتغير البرنامج كليا
الان ساتعلم الجلسات واحمي البرنامج باسم مستخدم وكلمة مرور
التعديل الأخير تم بواسطة قمر الشعراء ; 02-03-2009 الساعة 10:12 PM
__________________
ابصم