http://www.iranphp.net
1سرور
Apache HTTP به همراه PHP عنوان مقاله : روش نصبنگارنده
: علی نادریnaderi@arcor.de
١٣٨١
: آدرس پست الکترونیک/۵/ تاریخ نگارش : ۵http://www.iranphp.net
2سرور
: Apache HTTP به همراه PHP روش نصبرا تا حد ممکن به صورت گام به گام توضیح دهم
را از آدرس
. Apache HTTP Server به همراه PHP در این نوشته سعی خواهم کرد روش نصب: Apache HTTP Server نرم افزارhttp://www.apache.org/dist/httpd/binaries/win32/apache_2.0.40-win32-x86-no_ssl.exe
دریافت نمایید و آن را نصب کنید
.هستند بدون مشکل پیش خواهید رفت
کنید
) ( Default ) (در حالتی که همه ی گزینه ها، پیش فرض: Install کرده آن را Download آن را هم از آدر سهای زیر Installer و PHP نرم افزارhttp://de.php.net/do_download.php?download_file=php-4.2.2-Win32.zip
http://de.php.net/do_download.php?download_file=php-4.2.2-installer.exe
که
مربوط به پیکربندی این برنامه است را بیابید
تغییرات زیر باید در این پرونده اعمال شوند
httpd.conf وجود دارد که در آن م یتوانید فایل \conf را نصب کرده اید، زیرشاخه ای به نام Apache HTTP Server در شاخه ای که. با یک ویرایش گر ساده ی متن می توانید این پرونده را باز کرده و تغییردهید .برای اجرا شدن فایل ها با پسوند: phpها معرفی شده اند، سطر زیر را وارد م یکنیم
: ScriptAlias ١- در بخشی کهScriptAlias
/php4/ "c:/php/"در آن نصب شده ، وارد شود
سطر زیر را می آوریم
. PHP باید مسیری را که c:/php/ نکته این که: به جای: ، AddType application ٢- در قسمتAddType applicatin
/x-httpd-php4 .phpهم این خط اضافه م یشود
: Action application ٣- در بخشAction application
/x-httpd-php4 "/php4/php.exe"را درآن ذخیره و اجرا کنید، می نویسیم
ما معرفی می شود
کنید
در بخش آدرس تایپ
کنید
.( این php بین علامت های نقل قول مسیر شاخه ای که م یخواهید پرونده های DocumentRoot ٤- جلوی عبارت.) LocalHost زیر فهرست به عنوان. Restart ، توسط منویی که می شود Taskbar را، با کلیک بر روی نشانه ی آن در Apache HTTP Server پس از اعمال این تغیراتBrowser نوشته اید، در شاخه ای که در بند ۴ به آن اشاره کردم کپی کرده و برای نمایش آن در PHP حال کافی ست برنامه ای را که با:http://localhost/[ProgramName].php
http://www.iranphp.net
1عنوان مقاله
: مدیریت فایل های ارسالی توسط کاربراننگارنده
: مهدی ساغریآدرس پست الکترونیک
: .………………تاریخ نگارش
: …….…………http://www.iranphp.net
2مدیریت فایل های ارسالی توسط کاربران
:را می دهند به عنوان مثال در قسمت
است و یا نمونه پیغام صوتی خود را به
( Html فایل از طریق صفحات (فرم های Upload حتما تا بحال سایت هایی را دیده اید که به کاربران اجازهJpg یا Gif های یاهو که شما به عنوان یک کاربر عادی می توانید تصویر خود را که یک فایل با فرمت Profileو یا بصورت
PDF تان اضافه کنید و یا بخش آرشیو سایت های تحقیقاتی که به اعضای خود اجازه می دهند نتایج کار خود را در قالب یک فایل Profileشده بر روی سایت قرار دهند
. Zipبه مطالب گفته شده در بالا حتما به این نتجه رسیده اید که در اینگونه سیستم ها سه نکته اساسی قرار داد
FTP.
فایل های غیر مجاز
.به جای HTTP ۱-چکونگی ارسال فایل با استفاده از پروتکل. Upload ۲-بررسی فرمت فایل و جلوگیری از۳
-بررسی اندازه فایل و جلوگیری از ارسال فایلهای حجیم.برای دریافت فایل از کاربر ابتدا باید فرمی به شکل زیر ایجاد کرد
:<
<
<
<
form name="form1" method="post" action="_URL_" enctype="multipart/form_data">input type="file" name="userfile">input type="submit" name="Submit" value="Submit">/form>کادر
مخصوص در یافت فایل قرار گرفته در واقع این همان فایلی است که کاربر قصد ارسال به سرور را دارد
Submit فرم بالا را از فرمهایی که تا بحال با آن کار کرده ایم متمایز می کند . در فرم بالا قبل از دکمه multipart/form_data عبارت.ای دارد که قصد دارید عمل دریافت فایل را در آنجا انجام دهید
خوانده و بر روی سرور ذخیره کرد
. PHP اشاره به برنامه _URL_ در این فرم. Client تا اینجا فرم مورد نیاز طراحی شده است حال با یک برنامه ساده مثل نمونه زیر می توان فایل را از<?
if
(isset( $Submit )) {if
($_FILES['userfile']['type'] == "image/gif"){ copy ($_FILES['imagefile']['tmp_name'],"files/"
.$_FILES['imagefile']['name'])or die
("Could not copy");echo
"";echo
"Name: ".$_FILES['imagefile']['name']."";echo
"Size: ".$_FILES['imagefile']['size']."";echo
"Type: ".$_FILES['imagefile']['type']."";echo
}
"Copy Done....";else
{echo
"";echo
}
}?>
"Could Not Copy, Wrong Filetype (" .$_FILES['imagefile']['name'].")";بر روی سرور ذخیره می
کند
Files باشد آنرا با همان نامی که روی کامپیوتر کاربر قرارداشته در شاخه GIF این برنامه در صورتی که فایل ارسالی یک فایل.و تنظیمات آن متفاوت می باشند
ایجاد می گردند
ایجاد خواند شد
به جای
. PHP فایل تعریف می شوند بسته به نسخه Upload البته همانطور که میدانید متغییر هایی که برای. $HTTP_POST_FILES و $_FILES فعال باشد آرایه های track_vars موفق ، هنگامی که Upload بعد از یک. globals فعال باشد متغییرها به صورت register_globals سرانجام اگر$_FILES به بعد ترجیحا از متغییر عمومی PHP از نسخه ٤,٠,٣ به طور پیش فرض فعال است . از 4.1.0 : track_vars توجهhttp://www.iranphp.net
3استفاده می گردد
. $HTTP_POST_FILESبه منظور مهیا کردن مشخصات فایل
(های (ارسال شده ایجاد شده اند . محتوای این دو متغییر به شرح زیر است $HTTP_POST_FILES/$_FILES :است
HTML نام انتخابی ما در هنگام ساخت فرم ‘userfile’ البته توجه کنید که<?
$HTTP_POST_FILES
?>
['userfile']['name'];نام اصلی فایل بر روی کامپیوتر کاربر
.<?
$HTTP_POST_FILES
?>
['userfile']['type'];اجازه ذخیره شدن داده می شود حال چنانچه بخواهیم کاربر را محدود به
نماییم
مقایسه کنیم
GIF فایل . در برنامه فوق تنها به فایلهای (MIME type) شناسه محتوایWav ارسال فایل های: "audio/wav" باید مقدار این متغییر را با<?
.
$HTTP_POST_FILES['userfile']['size'] ?>[code]اندازه فایل برحسب بایت[
code]<? $HTTP_POST_FILES['userfile']['tmp_name'] ?>موقتا با آن نام بر روی سرور ذخیره می گردد
حمایت می کند
فعال باشد متغییرهای زیر موجود خواهند بود
. Upload نام موقتی که فایل در هنگام$HTTP_POST_FILES از PHP تنها در نسخه های ٤,١,٠ و بالاتر شناخته شده است و نیز نسخه ٣ $_FILES توجه : متغییر: register_globals پارامتر PHP.INI .همچنین اگر در فایل<?
$userfile
$userfile_name
$userfile_size
$userfile_type
?>
در فایل
تعیین شده باشد
upload_tmp_dir فایل ها به طور پیش فرض در دایرکتوری فایلهای موقت سرور ذخیره می شوند مگر اینکه مکان دیگری توسط. در پایان اجرای اسکریپت چناچه فایل ارسال شده از طرف کاربر را به مکان دیگری انتقال ندهید و یا نام آن را تغییر ندهید PHP.INIتوسط سیستم این فایل پاک خواهد شد
.و بالاتر می توانید خط اول برنامه فوق را بصورت زیر بنویسید
: PHP در صورت استفاده از 4.1.0<?
if
{ <
(is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) <br />br />//In PHP 4.1.0 or later, $_FILES should be used instead of $HTTP_POST_FILES.
ارسال چندین فایل به طور همزمان
:همانطور که میدانید یک برنامه را می توان به چنیدن روش مختلف پیاده سازی کرد ولی چه خو
باشد
ب است که این پیاده سازی همراه با استفاده بهینه از گرامر زبان.برای اینکه کاربر بتواند بیش از یک فایل را در یک لحظه ارسال کند فرمی به شکل زیر طراحی
کنید:<
<
form name="form1" method="post" action="_URL_" enctype="multipart/form_data">input type="file" name="userfile[]">http://www.iranphp.net
4<
<
<
<
input type="file" name="userfile[]">br />input type="submit" name="Submit" value="Submit">/form>همانطور که مشاهده می شود این فرم دارای دو کادر دریافت فایل است که به نام آنها به صورت یک آرایه است
. پس از ارسال این فرم بر روی سرور متغییر های:
<?
$HTTP_POST_FILES
['userfile']['name'][0]$HTTP_POST_FILES
['userfile']['size'][0]$HTTP_POST_FILES
['userfile']['type'][0]$HTTP_POST_FILES
?>
['userfile']['tmp_name'][0]دلالت بر مشخصات فایل اولی و متغییرهای
:<?
$HTTP_POST_FILES
['userfile']['name'][1]$HTTP_POST_FILES
['userfile']['size'][1]$HTTP_POST_FILES
['userfile']['type'][1]$HTTP_POST_FILES
?>
['userfile']['tmp_name'][1]دلالت بر مشخصات فایل دوم دارند
. همینطور الی آخر می توان چندین فایل را ارسال کرد.HTTP PUT
روشروش دیگری نیز برای ارسال فایل به سرور وجود دارد که بسیار ساده تر از روش بالا عمل می کند ولی چون این روش برای حف
خاصی در سرورها دارد از توضی
ظ امنیت سرور نیاز به تنظیماتح آن در اینجا صرف نظر کرده ام . چنانچه مایل به آشنایی با این روش هستید به آدرس زیر مراجعه کنید:http://www.php-center.de/en-html-manual/features.file-upload.put-method.html
درهنگام نوشتن چنین برنامه هایی مراقب مجوز هایی که به دایرکتوری ذخیره این فایل ها می دهید و همچنین بررسی اینکه فایل ارسال شده از طرف کاربر همان
چیزی است که باید باشد باشید
نگاهی هم به مقاله زیر داشته باشید
.فراموش نکنید که همیشه عده ای بر روی اینترنت به دنبال راهی برای نفوذ به کامپیوتر و یا وب سایت شما هستند بد نیست:http://securityresponse.symantec.com/avcenter/security/Content/2208.html
http://www.iranphp.net
1عنوان مقاله
: نمایش چند صفحه ای اطلاعاتنگارنده
: آرش میکائیلیarash@iranphp.net
تاریخ نگارش
: آدرس پست الکترونیک: …….…………http://www.iranphp.net
2نمایش چند صفحه ای اطلاعات
:تصمیم
استفاده شده اما این روش را
بکار برد
DataBase با توجه به مطالب مطرح شده در انجمن این سایت و جالب بودن بحث صفحه به صفحه نمایش دادن اطلاعات نتیجه شده از جستجو درMySQL گرفتم که مقاله ای در این خصوص تهیه کنم و امیدوارم که این مطالب مورد استفاده دوستان قرار بگیرد.در این مقاله از. DataBase می توان با هر:
LIMIT جزءرا در
خود داشته باشیم
DataBase کلید حل مشکل ماست ، به وسیله این جزء است که ما می توانیم سطرهای مورد نظر خود از Select در عبارت LIMIT جزء. Queryبا یک آرگومان استفاده شود تعداد جواب به آن
LIMIT به دو شکل به کار می رود با یک آرگومان و یا با دو آرگومان ،این آرگومانها عدد هستند ، اگر LIMITعدد محدود می شود
:SELECT
* FROM table LIMIT 5با دو آرگومان استفاده شود آرگومان اول مشخص کننده
سطرها از
LIMIT را در جواب بر می گرداند ،اما اگر Table در این حالت ٥ سطر اول Select عبارتSQL سطر آغازین است و آرگومان دوم تعداد سطرهایی را که باید برگردانده شوند را مشخص می کند ، البته باید به این نکته توجه کرد که در.(
صفر ( ٠) شروع می شوند نه از یک ( ١SELECT
* FROM table LIMIT 5, 5را برمی گرداند
مشکل نیست ولی برای اینکه به هدف مطرح شده در این مقاله نیل کنیم لازم است که چگونگی عملکرد آن را درک کنید
. DataBase سطرهای ٦ تا ١٠ از SQL این عبارت. LIMIT کار با جزء:
$start گام اول متغیراستفاده استفاده کنیم
. اما سوال این است که چگونه متوجه DataBase در اینجا می دانیم که از چه چیزی باید برای بدست آوردن سطرهای مورد نظر خود از$start
استفده می کنیم و این متغیر را از صفحه ای به صفحه دیگر می فرستیم
کنیم یا به عبارت دیگر از کدام سطر باید شروع کنیم ؟ پاسخ خیلی روشن است ما از یک متغیر به نام LIMIT می شویم که از کجا باید.می کنیم
: PHP حال که روش کار مشخص شده شروع به نوشتن کد در<?
$query
?>
php= "SELECT * FROM table LIMIT " . $start . ", 10";می کند
می نویسیم و یا با شرطی چک می کنیم که
اگر قبلا مقداری به آن داده نشده ما مقدار آن را صفر می کنیم لازم است برای این کار از کدی شبیه به کد زیر استفاده می کنیم
. اما برای مشخص select باشد را start را از جایی که مساوی مقدار table سطر از query ماست و این 10 query این شکلURL دو راه وجود دارد(در هنگامی که اولین ١٠ سطر را بازیافت می کنیم ) یا آن را در start کردن مقدار:<?
phpif
?>
(!isset($start)) $start = 0;به صورت خودکار صفر خواهد شد
$start حالا وقتی کسی صفحه ما را مشاهده کند مقدار:
Previous و Next های Link ساختنhttp://www.iranphp.net
3داریم که به ما می گوید از کجا شروع کنیم و از طرفی
start خیلی ساده است اگر آنچه را که تا اینجا انجام داده ایم مرور کنید می بینید که ما متغیری به نامNext
هست یا نه
سطر باشد و ما در صفحه پنجم از
است و ما سطرهای ٥٠ تا ٦٠ را در جواب داریم پس صفحه قبل باید سطرهای ۴۰ تا ٥٠ را نشان دهد یعنی
می دانیم که در هر مرحله چند سطر را در جواب بر می گردانیم با توجه به این اطلاعات در هر مرحله می توانیم مشخص کنیم که آیا نیازی به. Previous وLIMIT) مان دریافت می کنیم (بدون استفاده از 63 query برای مثال فرض کنید که کل سطرهایی که ما در جواب از$stat= جواب باشیم در این حالت 50نیز صادق است
.
Next نیاز داریم همین مطلب برای Previous برای صفحه قبل بزرگتر از صفر می شود پس به $start است .چون $stat=40این کار را با تکه کد زیر انجام می دهیم
<?
phpif
($start > 0)echo
"<a href=" . $PHP_SELF . "?start=" . ($start - 10) .">Previous</a><BR>n";if
($numrows > ($start + 10))echo
?>
"<a href=" . $PHP_SELF . "?start=" . ($start + 10) .">Next</a><BR>n";حال ما تمام قسمتهایی را که نیاز داشتیم ایجاد کردیم و وقت آن رسیده که تمام این قسمتها را در کنار هم قرار دهیم
:<?
phpif
(!isset($start)) $start = 0;$query
= "SELECT * FROM table LIMIT " . $start . ", 10";//do database connection
$result
//display data
//this code was wrong, I did not have the second query.
// need another query to get the total amount of rows in our table
= mysql_query($query); //you should do error checking$query
= "SELECT count(*) as count FROM table";$result
= mysql_query($query);$row
= mysql_fetch_array($result);$numrows
= $row['count'];if
($start > 0)echo
"<a href=" . $PHP_SELF . "?start=" . ($start - 10) . ">Previous</a><BR>n";if
($numrows > ($start + 10))echo
?>
"<a href=" . $PHP_SELF . "?start=" . ($start + 10) . ">Next</a><BR>n";امیدوارم که این تو
ضیحات ایده کلی را به شما برای این کار داده باشد ، و بتوانید این مطالب را برای کارهای خود استفاده کنید.