مقدمه :
دنياي عجيبي است كه تكنولوژي هاي مربوط به آن تار جهان گستر “World Wide Web” اغلب بدون پشتيباني كافي عرضه مي شوند و كاربران اين تكنولوژي همه روزه با واژگـان جديدي بر خورد ميكنند كه باعث سر در گمي آنها مي شوند. براي نمونه ميتوان به رشد نرم افزارهاي open source اشاره كرد كه عبارتند از:

برنامه هاي كه بتوان آنها را گسترش داد و يا تغييراتي در ساختار آنها ايجاد كرد
متداول ترين اين برنامه ها سيستم عامل Unix و به طور خاص Linux مي باشد. اين برنامه ها با وجود ثبات و پايداري، داراي يك مشكل بزرگ است و آن دشوار بودن آموختن اين برنامه ها مي باشد. كمبود راهنماهايي كه به زبان ساده اين برنامه ها را به مبتديان آموزش دهد باعث شده است كه اين دسته از نرم افزار ها از جايگاه واقعي خود دور نگاه داشته شوند. PHP يكي از زبانهاي اسكريپتي open source است و ابزار مفيدي مي باشد كه تا كنون علي رغم سادگي استفاده از آن هنوز به صورت شايسته اي از آن استقبال نشده است.
PHP چيست ؟
PHP سال ۱۹۹۴ توسط Rasmus Lerdorf ايجاد شد و مخفف واژگان Personal Home Pages به حساب مي آيد. با گسترش قابليت ها و موارد استفاده اين زبان PHP در معناي Hypertext Preprocessor به كار گرفته شد. عبارت پيش پردازشگر (Preprocessor) بدين معني ست كه PHP اطلاعات را قبل از تبديل به زبان Html پردازش مي كند.
مطابق مطالب سايت وب رسمي PHP كه در آدرس http://www.php.net قرار دارد، PHP زبان اسكريپتي سمت سرويس دهنده Html Embeded , Cross-Platform ,(Server-side) م

ي باشد.
سمت سرويس دهنده بودن PHP بدين معناست كه تمام پردازشهاي اين زبان بر روي سرويس دهنده (Server) انجام مي گيرد. يك سرويس دهنده در حقيقت يك كامپيوتر مخصوص مي باشد كه صفحات وب در آنجا نگهداري مي شوند و از آنجا به مرورگر وب كاربران منتقل مي شوند.
چگونگي ادامه اين روند را در درس هاي آتي توضيح داده خواهد شد.
منظور از Cross-Platform بودن اين زبان اين است كه بروي هر سيستم و با هر سيستم عاملي از قبيل : Unix, Windows NT, Macintosh, Os/2 اجرا ميشوند. توجه كنيد كه منظور از سيستم عامل، سيستم عامل هايي مي باشند كه بر روي سرويس دهنده نصب مي شوند. PHP نه تنها قابليت اجرا بر روي هر سيستم عاملي را دارا مي باشد بلكه براي منتقل كردن برنامه هاي آن از يك سيستم عامل به سيستم عامل ديگر احتياج بــه تغييرات اندكي خواهيد داشت و حتي در بعضي از موارد بدون احتياج به هيچ تغييري مي توانيد يك برنامه به زبان php را از يك سيستم عامل به سيستم عامل ديگر منتقل كنيد.
منظور از Html embeded بودن PHP اين است كه دستورات اين زبان در بين كدهاي html قرار مي گيرند. بنابراين برنامه نويسي به زبان PHP كمي پيچيده تر از برنامه نويسي به زبان Html به حساب مي آيد.
PHP بر خلاف زبانهاي برنامه نويسي (Programming Languages) يك زبان اسكريپتي (Scripting Language) مي باشد به عبارت ديگر دستورات PHP بعد از رخداد يك رويداد (Event) اجرا مي شوند. اين رويدادها مي توانند شامل ارسال يك فرم رفتن به يك URL مشخص و يا مواد ديگر باشند متداولترين زبان اسكريپتي زبان Java Script مي باشد كه معمولا براي پاسخ به رويدادهاي كاربر در مرورگر وب بــه كار مي رود تفاوت عمده Java Script با PHP در اين است كه Java Script يك تكنولوژي سمت سرويس گيرنده (Client-side) مي باشد.
زبان هايي مانند Java Script يا PHP تفسير شونده (Interpreted) ناميده ميشوند. به عبــارت ديگر براي اجرا به يك مفسر مانند مرورگر وب احتياج دارند. اما زبانهاي برنامه نويسي مانند C يا Java بعد از ترجمه به زبان ماشين (Compile) به خودي خود قابل اجرا مي باشند.جديدترين نسخه PHP نسخه ۴ اين زبان اسكريپتي مي باشد و كليه فايل ها و كدهايي كه توي اين وبلاگ ارائه ميشه تحت اين نسخه كار ميكنند. اما يك مشكل هست كه اكثر سرويس دهنده ها از نسخه ۳ استفاده ميكنند. تفاوت اين دو نسخه PHP بسيار اندك هست و تغييرات مهم عموما در مسير اصلاح عملكرد اين زبان صورت گرفته شده است.

چرا PHP ؟
اولين چيزي كه مي خواهم در موردش توضيح دهم اين است كه به چه علتي ما از PHP استفـاده مي كنيم؟ PHP در مقايسه با تكنولوژي هاي مشــابه سريعتر بهتر و آسانتر است. از جمله تكنولوژي هــاي مشابه براي طراحي يك سايت وب مي توان به اين موارد اشاره كرد :اسكريپت هاي Common Gateway interface) CGI) كه معمولا به زبان Perl نوشته مي شوند و ASP . مزيتي كه PHP در مقــــابل HTML دارد اين است كه HTML يك سيستم حدود به حساب مي آيد و توانايي ايجاد ارتباط متقابل با كاربر را ندارد. يك صفحه HTML ساده توانايي پاسخ به اعمال كاربر را ندارد اما با استفاده از PHP شما ميتوانيد صفحاتي بر اساس سيستم عامل كاربر و يا تاريخ مشـاهده صفحه تنظيم كنيد . همچنين PHP مي تواند با فايل ها يا پايگاههــــــــاي داده (DataBase) ارتباط بر قرار كند و بسياري عمليات ديگر كه HTML قادر به انجام به آنها نمي باشد.جاي زبانهــاي مانند CGI و ASP و يا JSP براي طراحي سـايت دينــــــــاميك استفاده كند؟
دليل اول سرعت بيشتر PHP چه در برنامه نويسي و ايجاد برنامه هايي به اين زبان و چه در اجرا مي باشد . همچنين PHP براي يادگيري بسيار ساده مي باشد و افــراد بدون نياز به زمينه هاي قبلي در برنامه نويسي و تنهــا با يادگيري دستورات و راهنماهايي كه وجود دارد مي توانند اين زبان را ياد بگيرند.
دومين دليل اين است كه PHP به صورت اختصاصي تنها براي ايجاد صفحـات ديناميك طراحي شده است. امـــا Perl و VbScript و يا Java اينگونه نيستند و به همين دليل PHP سريعتر و ساده تر از تكنولوژي هاي جايگزين مي باشد.

صفحه Index.html :

صفحه Home.php :

صفحه Register.php :

صفحه Upload.php :

صفحه Search.php :

صفحه View :

صفحه Map.html :

صفحه View2.php :

چکیده :

این سایت که شامل ۸ صفحه است . اعمال این صفحات به شرح ذیل است :
صفحه index.html کار ورود به صفحه اصلی سایت را بر عهده دارد.
صفحه home.php اصلی ترین صفحه سایت است که از طریق آن می توان به صفحه ثبت نام و آپلود کردن عکس ها وارد شویم. همچنین می توان از داخل این صفحه جست و جو نمود.
در صفحه view.php کاربر لیست عکس هایی را که از منو انتخاب کرده می تواند ببیند.
صفحه register.php کارگرفتن مشخصات کاربر و ثبت نام وی را بر عهده دارد.

و اما کاربر می تواند درصفحه upload.php که در این صفحه عمل آپلود کردن را کاربر می تواند انجام دهد.
در صفحه ی search.php مشخصاتی را که کاربر در صفحه home.php وارد کرده از جمله نوع ، سایز ونام عکس را گرفته و جست و جو را انجام می دهد.
در صفحه view2.php عمل بزرگنمایی عکس ها یی که چه در صفحه view.php

محدودیت ها :

اما در این سایت اگر کسی ثبت نام نکرده باشد نمی تواند از امکاناتی همچون :
بزرگنمایی عکس ها
آپلود کردن عکس ها
بهره ببرد.
ثبت نام :

در ابتدا من طریقه ثبت نام را برای شما توضیح می دهم که اگر کاربردرسایت عضو شود می تواند به طور کامل از تمام امکانات سایت استفاده کند.
برای ثبت نام کاربر باید به لینکی که در سمت چپ صفحه home.php یا iew.php که هردو این امکان را دارا هستند مراجعه کند. در زیر شکل این تصویر را می بینید :

با کلیک کردن بر روی این لینک کاربر صفحه register.php مشاهده می کند.

همانطور که در شکل می بینید در این صفحه مشخصات کاربر خواسته شده و کاربر باید تمام گزینه ها را وارد کند تا بتواند ثبت نام کند.در زیر کدهای مربوط به ثبت نام را برای شما شرح می دهم :
<? php

$name=$_POST [‘name’];
$family=$_POST [‘family’];
$age=$_POST [‘age’];
$city=$_POST [‘city’];
$username=$_POST [‘username’];
$password=$_POST [‘password’];
$password1=$_POST [‘password1’];

 

 

$email=$_POST [’email’];
If (!get_magic_quotes_gpc())
{
$name=addslashes ($name);
$family=addslashes ($family);
$age=addslashes ($age);
$city=addslashes ($city);
$username=addslashes ($username);
$password=addslashes ($password);
$password1=addslashes ($password1);
$email=addslashes ($email);
}
if (trim($name) && trim($family) && trim($city) && trim($username) &&
trim($password) && trim($password1) && trim($email) )

{
$query=”select username from user where username like’$username’ “;
$link=mysql_connect(“localhost”,”root”,””);
if(!$link)
{
die (“Could not Connect MYSQL”);
}
mysql_select_db(“Gallery”) or die (“Could Not Open Gallery”);
$result=mysql_query($query) or die (mysql_error());
if(!mysql_num_rows($result) || strlen($password)<17)
{
if(($password != $password1) || (strlen($password)<6))
{
$k=1;
echo ‘Please check your password’.'</br>’;
}
if(!$k)
{
$password=sha1($password);
$query=”insert into user values(“;
$query=$query.”‘”.$name.”‘,”;

$query=$query.”‘”.$family.”‘,”;
$query=$query.”‘”.$age.”‘,”;
$query=$query.”‘”.$city.”‘,”;
$query=$query.”‘”.$username.”‘,”;
$query=$query.”‘”.$password.”‘,”;
$query=$query.”‘”.$email.”‘)”;
mysql_query($query) or die (mysql_error());
mysql_close($link);
echo “<h4>Thank You. You member now. Please back to home<h4>”.”<br>”;
}
}
else
echo “Please Select The Other User Name. Beacause It’s repeat “;
}
?>

ابتدا متد post اطلاعات را از فرمی که تمام مشخصات وارد آن شده به خود صفحه register.php ارسال کرده :
<form id=”form1″ name=”form1″ method=”post” action=”register.php”>
در ادامه دوباره با متد post مشخصات را دریافت کرده و در متغیرها ذخیره می کند :
<? php

$name=$_POST [‘name’];
$family=$_POST [‘family’];
$age=$_POST [‘age’];
$city=$_POST [‘city’];
$username=$_POST [‘username’];
$password=$_POST [‘password’];
$password1=$_POST [‘password1’];
$email=$_POST [’email’];
بعد تمام کاراکترهای کنترلی در تمام فیلدها جست وجو می کند. در این حالت مقدار تابع get_magic_quotes_gpc() را بررسی می کند. با افزو

دن (/) به کاراکترهای کنترلی , استفاده از آنها ممکن می شود. برای رهایی از دست کاراکترهای کنترلی از()addslashes استفاده می کنیم :

If (!get_magic_quotes_gpc())
{
$name=addslashes ($name);
$family=addslashes ($family);
$age=addslashes ($age);

$city=addslashes ($city);
$username=addslashes ($username);
$password=addslashes ($password);
$password1=addslashes ($password1);
$email=addslashes ($email);
}
سپس در این قسمت با استفاده از تابع trim() فضاهای خالی قبل و بعد از عبارات درون textbox ها حذف می شود. و بعد در صورت وجود مقداردر تمام textbox ها شرط برقرار می شود:

if (trim($name) && trim($family) && trim($city) && trim($username) &&
trim($password) && trim($password1) && trim($email) )

در صورت درست بودن شرط به database متصل شده(که نام آن gallery است) و در جدول user تمامusername ها را چک می کند که آیا نام کاربری تکراری است و همچنین چک می کند طول آن از ۱۷ کاراکتر بیشتر است یا نه. در صورت تکراری بودن وطول بیشتر از ۱۷ کاراکتر وارد پیغام خطای زیر چاپ و از ثبت اطلاعات جلوگیری می شود می شود :

echo “Please Select The Other User Name. Beacause It’s repeat “;

در ادامه بررسی می کند آیا پسورد که باید در دو textbox نوشته شود با هم برابر است و همچنین باید حداقل طول پسورد وارد شده ۶ کاراکتر یا بیشت رباشد برای اینکه حدس زدن پسورد مشکل باشد. که در صورت نقض این شرط پیغام زیر نمایش داده می شود و از ثبت اطلاعات جلوگیری می شود:

echo ‘Please check your password’.'</br>’;

در صورت پر کردن تمام اطلاعات و مشکل نداشتن password و username اطلاعات کاربرتوسط دستور insert وارد database می شود و پیغام چاپ شده:
Thank You. You member now. Please back to home
سپس اتصال به database قطع می شود. البته لازم به ذکر است که password کاربر توسط تابع sha1 رمزگذاری می شود و در database به صورت ۴۰ کاراکتر ذخیره شده که حتی server هم از تشخیص آن نا توان است:
If (!$k)
{
$password=sha1($password);
$query=”insert into user values(“;
$query=$query.”‘”.$name.”‘,”;
$query=$query.”‘”.$family.”‘,”;
$query=$query.”‘”.$age.”‘,”;

$query=$query.”‘”.$city.”‘,”;
$query=$query.”‘”.$username.”‘,”;
$query=$query.”‘”.$password.”‘,”;
$query=$query.”‘”.$email.”‘)”;

mysql_query($query) or die (mysql_error());
mysql_close($link);

حال برای وارد شدن باید به صفحه اصلی بازگردیم.

Login کردن :

پس از بازگشت به صفحه اصلی(home.php) همانطور که در زیر نشان داده شده username و password را کاربر وارد کرده :

در صورت درست و ورود تصویر بالا تبدیل به شکل زیر می شود(در صورت مثال اگر username کاربر masood باشد) :

تغییر شکل این دو تصویر به لحاظ وجود کد زیر انجام می گیرد که این کدها در صفحه home.php قرار دارد:
<?php
if(isset($_SESSION[‘valid_user’]))
{
$username=$_SESSION[‘valid_user’];
?>
<h1 align=”center”> Hi <?php echo $username; ?> </h1>
<p align=”center”>
<?php
echo “<h2 align=’center’> WELCOME </h2>”;?>
</p>
<p>&nbsp;</p>
<form id=”form1″ name=”logout” method=”post” action=”home.php”>
<div align=”center”>
<input name=”logout” typ

 

e=”submit” class=”style6″ value=” Logout ” />
<?php }
else {
?>
</div>
</form>
<form id=”form1″ name=”login” method=”post” action=”home.php”>
<div align=”left”>
<p class=”style17″> User Name: <br />
<input name=”username” type=”text” id=”user” />
<br />
<br />
Password:
<input name=”password” type=”password” id=”pass” />
</p>
</p>
<input name=”login” type=”submit” class=”style6″ value=” Login ” />
<?php }?>

که در کد بالا بررسی شده که اگردر متغیر $_SESSION[‘valid_user’] نام username کاربری وجود نداشته باشد فرم login یا شکل اول را نشان می دهد.
ولی در صورتی که در متغیر $_SESSION[‘valid_user’] نام username کاربری وجود داشته باشد فرم logout یا شکل دوم نمایش داده می شود.
اما در کدهای زیر مقدار دهی به متغیر $_SESSION[‘valid_user’] صورت می گیرد.
///////////////////login//////////////
if (isset($_POST[‘login’]))
{
$user=$_POST[‘username’];

$pass=$_POST[‘password’];
if($user and $pass)
{
$pass=sha1($pass);

 

if(strlen (trim($user)))
{
if(strlen (trim($pass)))
$query=”select * from user where username=’$user’ && password=’$pass'”;
}
$link = mysql_connect( “localhost”, “root”, “” );
if ( ! $link )
die( “Could not Connect To MySQL” );
mysql_select_db(“Gallery”) or die( “Could not open Gallery” );
$result = mysql_query($query) or die(mysql_error());
if(mysql_num_rows($result))
{
$_SESSION[‘valid_user’]=$user;
در این کدها ابتدا با متد $_post , username و password که کاربر وارد کرده را گرفته و چک می کند که آیا username در database وجود دارد در صورت وجود آن password آن را مقایسه می کند تا با password آن برابر باشد.
سپس در صورت درستی username , password در متغیر $_session ، username را قرار می دهد.
Logout کردن :
اگر کاربر دکمه logout را بزند این دستور اجرا می شود :
//////////logout////////////
else if (isset($_POST[‘logout’]))
{
$old_user=$_SESSION[‘valid_user’];
unset($_SESSION[‘valid_user’]);

session_destroy();
}
unset($_session[‘valid_user’])
session_destroy();
مقدار درون $_session را از بین می برد.
Search کردن :

عکسی که در زیر مشاهده می کنید در صفحه home.php وجود دارد تا کاربر عکس یا عکس های مورد نظر خود را ببیند :

همانطور که مشاهده می کنید می توان بر اساس عنوان ، سایزیا نام عکس جستجو را انجام داد. این اطلاعات به صفحه Search.php فرستاده می شود و در آن صفحه عکس ها ی مورد نظر دیده می شود.
if(isset($_POST[“search”]))
{
$search=$_POST[“search”];
$res=$_POST[“res”];
$type=$_POST[“title”];
$link=mysql_connect(‘localhost’,’root’,”);
if(!$link)
die (“could not connect mysql”);
mysql_select_db(‘gallery’) or die (“could not open database”);
$query=”select name from picture where name like ‘%$search%’ and resolution like ‘%$res%’ and type like ‘%$type%'”;
$result=mysql_query($query);
while($row=@mysql_fetch_array($result))
{

$array[$i]=$row[‘name’];
$i++;
}}
در کد بالا همانطور که مشاهده می کنید مشخصات عکس مورد جست و جو گرفته شده سپس تمام عکس هایی name ,ه و به صورت عکس های کوچک در جدول و در کنار هم نشان می دهد. کد زیر جدول عکس ها را نشان می دهد:
for(;$i<=$count;$i++)
{
<?php if(is_file(‘pic/’.$array[$i])) {?>
<a href=”view2.php?name=<?php echo $array[$i]; ?>”><img src=”pic/<?php echo $array[$i]; ?>” width=”150″ height=”150″ align=”middle”/>
<?php }$i++;?>
</a></td>
<td width=”33%” align=”center” valign=”top”><?php if(is_file(‘pic/’.$array[$i])) {?>
<a href=”view2.php?name=<?php echo $array[$i]; ?>”><img src=”pic/<?php echo $array[$i]; ?>” width=”150″ height=”150″ align=”middle”/></a>
<?php }$i++;?></td>
<td width=”33%” align=”center” valign=”top”><?php if(is_file(‘pic/’.$array[$i])) {?>
<a href=”view2.php?name=<?php echo $array[$i]; ?>”><img src=”pic/<?php echo $array[$i]; ?>” width=”150″ height=”150″ align=”middle”/></a><a href=”view2.php?name=<?php echo $array[$i]; ?>”>
<?php }?>
</a></td>
</tr>
<?php
در صورتی که عکسی با این مشخصات پیدا نشود پیغام زیر نمایش داده می شود:

No Picture With Identifiers
اما در ادامه با انتخاب کردن هر عکس می توان در صورت login بودن آن عکس را با اندازه بزرگ خود در صفحه view2.php مشاهده کرد.
اما در صفحه view2.php دربالای صفحه جلسه را آغاز می کند.
<?php
session_start();
?>
که بعد از آغاز آن می توان چک کرد کسی که می خواهد بزرگنمایی عکس را ببیند login کرده یا نه :
if(isset($_SESSION[‘valid_user’]))
{
$name=$_GET[‘name’];
$type=$_GET[‘type’];

$path=”pic/”.$name;?>
<img src=”<?php echo $path; ?> “/>
}رگ ببیند و با پیغام زیر روبرو می شود که :

You must member to view large picture.

Upload کردن :

یکی از کارهای اساسی که فقط کاربری که عضو سایت باشد می تواند به آن دسترسی داشته باشد به اشتراک گذاری یا Upload عکس خود برای دوستان یا کاربران دیگر است.