الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في كود تغيير كلمة المرور change password

بدأه سيد الاحساس في 18 أغسطس 2010 · 13 رد · 5,399 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

كل عام وانتم بخير وتقبل الله منا ومنكم صالح الأعمال ..

عندي مشكلة في كود تغيير الباسوورد لـ مستخدم user يريد تغيير كلمة المرور بعد تسجيل الدخول ..

عند تنفيذ الكود يظهر لي الخطأ :

Parse error: parse error, expecting `','' or `';'' in D:\xampp\htdocs\abha_hotel\change_password.php on line 54

طبعاً لما راجعت الكود مالقيت شي مريب خصوصاً وأن السطر 54 عبارة عن بداية الوسم لـ form وهو كالتالي:

<form action="change_password.php" method="post">

لا أدري ما المشكلة هنا؟!

ياليت المساعدة ..

<?php
session_start();
$user= $_SESSION['username']; // to check if the user logged in

if ($user)
{

	if ($_POST['submit'])
	{
		// check fields
		$oldpass= $_POST['oldpass']; // using md5 encrypted password
		$newpass= $_POST['newpass'];
		$renewpass= $_POST['repeatnewpass'];

		// check password against DB


		// connect to DB
		$connect= mysql_connect("localhost","root","") OR die ("couldn't connect!!");
		mysql_select_db("abha_hotel") OR die ("couldn't fine DB");

		$queryget= mysql_query("SELECT password FROM customers WHERE username='$username'") or die ("Query doesn't work");
		$row= mysql_fetch_assoc($queryget); // this creates an array

		$oldpassdb= $row['password'];

			// check passwords
			if ($oldpass == $oldpassdb)
			{
				// check tow new passwords
				if ($newpass == $renewpass)
				{
					// success
					// change passwords in DB
					$querychange= mysql_query("
					UPDATE customers SET password= '$newpass' WHERE username = '$username'
					");
					session_destroy();
					die("your password has been changed. <a href='login1.php'>Return</a> to the login page");
				}
				else
					die ("New passwords do not match");	


			}
			else
			die ("Old password does not match");		
	}

	else
	{
		echo"

<form action="change_password.php" method="post">
  <table width="51%" border="0">
    <tr>
      <th colspan="2" bgcolor="#CCCCCC" scope="row">Change password</th>
    </tr>
    <tr>
      <th width="42%" class="style3" scope="row"><div align="right" class="style3">Old password:</div></th>
      <td width="58%"><label>
        <input type="text" name="oldpass" id="oldpass" />
      </label></td>
    </tr>
    <tr>
      <th bgcolor="#E8E8E8" class="style3" scope="row"><div align="right" class="style3">New password:</div></th>
      <td bgcolor="#E8E8E8"><label>
        <input type="password" name="newpass" id="newpass" />
      </label></td>
    </tr>
    <tr>
      <th class="style3" scope="row"><div align="right" class="style3">Re-enter New Password:</div></th>
      <td><label>
        <input type="password" name="repeatnewpass" id="repeatnewpass" />
      </label></td>
    </tr>
    <tr>
      <th colspan="2" scope="row"> </th>
    </tr>
    <tr>
      <th scope="row"> </th>
      <td><label>
        <input type="submit" name="submit" id="submit" value="Change password" />
        <input type="reset" name="Reset" id="Reset" value="Reset" />
      </label></td>
    </tr>
  </table>
</form>
			";
	}
}

else

die("you must be logged in to change the password. You can <a href='login1.php'>login</a> now.");


?>

<!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=utf-8" />
<title>change_password</title>
</head>

<body>
</body>

</html>

شكراً لكم

رمضان كريم ،،

تم تعديل هذه المشاركة بواسطة سيد الاحساس في 18 أغسطس 2010 في 09:51

#2

السلام عليكم المشكلة باشراة التنصيص المزدوجة اي انت تضع اشارات تنصيص مزدوجة ضمن اشارات تنصيص مزدوجة وهذه عملية معقدة

برايي استخدم التوجيه الثلاثي

$x=<<<modoranyname
";";'llkjfkjlk
كل هذا الكلا م لا يؤثر
modoranyname;
echo $x;

بالتوفيق

In bad state

#3

يوجد حل بطريقتين (قمت باختصار الكود لحفظ المساحة وأبقيت على ما يوضّح الفكرة فقط):

echo <<<foo
<form action="change_password.php" method="post">
 <!-- form content goes here -->
</form>
foo;

كما اقترح X-File

والحل الآخر

else
{
?>
<form action="change_password.php" method="post">
 <!-- form content goes here -->
</form>
<?php
}

لأن PHP لديها المرونة لكسر تعبير شرطي Conditional Expression و إجراء أي عمليات أخرى بـ HTML مثلاً ومن ثم إكمال التعبير الشرطي ذاته.

وهناك حل بدائي أخير

echo "
<form action=\"change_password.php\" method=\"post\">
 <!-- form content goes here -->
</form>
";

أي char escaping

أو

echo "
<form action='change_password.php' method='post'>
 <!-- form content goes here -->
</form>
";

اختر ما يناسبك

تم تعديل هذه المشاركة بواسطة Xacker في 18 أغسطس 2010 في 11:05

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#4

أخوي Xacker :

الله يعطيك العافية جربت الطريقة ونفعت اخوي .. بس لازال الكود لايقبل تبديل الباسوورد الجديد .. يعني انا جربت تغيير الباسوورد الحالي بـ باسوورد جديد ولكن تظهر لي العبارة : Old password does not match

وهي المفروض تظهر في حالة أن الباسوورد الجديد والكونفرميشن حقه مايتطابقون ..

ولكن جربت ادخال باسوورد جديد + مطابقة له

ولكن لازال الكود يعطيني نفس الرسالة : Old password does not match

أخوي اذا فيك تقول لي ويت الخطأ بالكود هنا الله يعافيك:

<?php
session_start();
$user= $_SESSION['username']; // to check if the user logged in

if ($user)
{

	if ($_POST['submit'])
	{
		// check fields
		$oldpass= $_POST['oldpass']; // using md5 encrypted password
		$newpass= $_POST['newpass'];
		$renewpass= $_POST['repeatnewpass'];

		// check password against DB


		// connect to DB
		$connect= mysql_connect("localhost","root","") OR die ("couldn't connect!!");
		mysql_select_db("abha_hotel") OR die ("couldn't fine DB");

		$queryget= mysql_query("SELECT password FROM customers WHERE username='$username'") or die ("Query doesn't work");
		$row= mysql_fetch_assoc($queryget); // this creates an array

		$oldpassdb= $row['password'];

			// check passwords
			if ($oldpass == $oldpassdb)
			{
				// check tow new passwords
				if ($newpass == $renewpass)
				{
					// success
					// change passwords in DB
					$querychange= mysql_query("
					UPDATE customers SET password= '$newpass' WHERE username = '$username'
					");
					session_destroy();
					die("your password has been changed. <a href='login1.php'>Return</a> to the login page");
				}
				else
					die ("New passwords do not match");	


			}
			else
			die ("Old password does not match");		
	}

	else
	{
echo <<<foo
<form action='change_password.php' method='post'>
  <table width="51%" border="0">
    <tr>
      <th colspan="2" bgcolor="#CCCCCC" scope="row">Change password</th>
    </tr>
    <tr>
      <th width="42%" class="style3" scope="row"><div align="right" class="style3">Old password:</div></th>
      <td width="58%"><label>
        <input type="text" name="oldpass" id="oldpass" />
      </label></td>
    </tr>
    <tr>
      <th bgcolor="#E8E8E8" class="style3" scope="row"><div align="right" class="style3">New password:</div></th>
      <td bgcolor="#E8E8E8"><label>
        <input type="password" name="newpass" id="newpass" />
      </label></td>
    </tr>
    <tr>
      <th class="style3" scope="row"><div align="right" class="style3">Re-enter New Password:</div></th>
      <td><label>
        <input type="password" name="repeatnewpass" id="repeatnewpass" />
      </label></td>
    </tr>
    <tr>
      <th colspan="2" scope="row"> </th>
    </tr>
    <tr>
      <th scope="row"> </th>
      <td><label>
        <input type="submit" name="submit" id="submit" value="Change password" />
        <input type="reset" name="Reset" id="Reset" value="Reset" />
      </label></td>
    </tr>
  </table>
</form>
foo;
	}

}

else

die("you must be logged in to change the password. You can <a href='login1.php'>login</a> now.");


?>

<!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=utf-8" />
<title>change_password</title>
</head>

<body>
</body>

</html>

أخوي X-File

الله يعطيك العافية ورمضان كريم ع الجميع ،،

#5
سيد الاحساس كتب:

لازال الكود لايقبل تبديل الباسوورد الجديد .. يعني انا جربت تغيير الباسوورد الحالي بـ باسوورد جديد ولكن تظهر لي العبارة : Old password does not match

وهي المفروض تظهر في حالة أن الباسوورد الجديد والكونفرميشن حقه مايتطابقون ..

عبارة "Old password does not match" تظهر في حال كانت كلمة السر القديمة لا تطابق كلمة السر التي يتم إدخالها لتأكيد أن هذا حسابك قبل اعتماد كلمة السر الجديدة.

سيد الاحساس كتب:

ولكن جربت ادخال باسوورد جديد + مطابقة له

ولكن لازال الكود يعطيني نفس الرسالة : Old password does not match

الكود من النظرة الأولى لا يحوي على أخطاء، لكن هناك أمرين للقيام بهما:

1- هل يتم تخزين كلمة السر في قاعدة البيانات كما هي plaintext أم يتم حساب MD5 hash لها ويتم حفظه بدلاً منها ؟ (أسألك لأنك لم تطلعنا على كود صفحة إنشاء حساب)

في حال كنت تقوم بتخزين MD5 hash لكلمة السر، فيجب عليك هنا أيضاً احتساب MD5 hash لكلمة السر التي يقوم المستخدم بإدخالها في حقل Old password في الفورم، بعدها تستطيع أن تطابقها بالشرط

if ($oldpassdb == $oldpass)

2- في حال كانت كلمة السر تخزّن كما هي plaintext دون تشفير، تأكد من أنك عند اختبار الكود تقوم بإدخال كلمات السر بشكل دقيق

Old password: كلمة السر القديمة ليتم مطابقتها والتأكد من ملكية المستخدم للحساب قبل اعتماد الجديدة.

New password: كلمة السر الجديدة.

Repeat new password: تأكيد كلمة السر الجديدة.

أنا أرجح الاحتمال الأول أن تكون نسيت احتساب MD5 hash هنا ولذلك لن تحصل مطابقة وستظهر عبارة Old password does not match.

بانتظار ردّك بعد التجربة.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#6

كلامك سليم أخوي Xacker

أنا اخزن الباسوورد كماهي بدون تشفير md5 مع ان الدرس الذي طبقته كان متطلب أني اشفر md5 بس ما سويتها ..

الحين هل تنصحني بتشفير الباسوورد بطريقة md5؟؟

وماهي الصفحات التي لابد أن اعدل عليها ؟؟

هل هي صفحة تغيير الباسوورد change_password.php وصفحة التسجيل reg2.php فقط ؟؟

هذه صفحة التسجيل reg2.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=utf-8" />
<title>Registeration form</title>
<style type="text/css">
<!--
.style7 {font-family: Tahoma; font-weight: bold; font-size: 14px; }
.style8 {font-size: 14px}
.style14 {font-size: 12px; font-family: Tahoma; }
-->
</style>

<style type="text/css">
<!--
.style15 {
	font-size: 10px;
	color: #3399FF;
}
-->
</style>
<style type="text/css">
<!--
.style17 {color: #FF0000}
.style18 {font-size: 10px}
.style19 {
	color: #003399
}
.style20 {
	color: #003399;
	font-size: 18px;
	font-weight: bold;
}
.style21 {
	color: #FFFFFF;
	font-weight: bold;
	font-size: 18px;
}
-->
</style>
<script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<script src="SpryAssets/SpryValidationSelect.js" type="text/javascript"></script>
<link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.style22 {font-size: 12px}
.style23 {font-size: 14px; font-family: Tahoma;}
.style24 {
	color: #EEEEEE;
	font-size: 10px;
	font-family: Tahoma;
}
-->
</style>
<link href="SpryAssets/SpryValidationSelect.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.style26 {
	font-family: Tahoma;
	color: #3399FF;
}
-->
</style>
</head>

<body>
<form id="form1" name="form1" method="post" action="reg_check.php">
<br />
<table width="594" border="0" align="center">
    <tr bgcolor="#000066">
      <td colspan="2" align="right" valign="baseline" nowrap="nowrap" bgcolor="#000033"><p align="center" class="style21">Registeration form<br />
      </p>      </td>
    </tr>

    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"> </td>
      <td> </td>
    </tr>
    <tr>
      <td colspan="2" align="right" valign="baseline" nowrap="nowrap" class="style14 style18"><div align="left"><span class="style17">*</span> Mandatory fields</div></td>
    </tr>
    <tr>
      <td colspan="2" align="right" valign="baseline" nowrap="nowrap"><h3 align="left" class="style20">My details</h3></td>
    </tr>
    <tr>
      <td width="108" align="right" valign="baseline" nowrap="nowrap"><span class="style7">Title:</span></td>
      <td width="476"><label>
        <select name="title" id="title">
          <option value="Mr">Mr</option>
          <option value="Mrs">Mrs</option>
          <option value="Miss">Miss</option>
          <option value="Ms">Ms</option>
        </select>
      </label></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"> <span class="style23"><span class="style17 style22">*</span></span><span class="style7"> First name:</span></td>
      <td><span id="sprytextfield1">
        <label><span id="sprytextfield6">
        <input name="fname" type="text" id="fname" size="32" />
        <span class="textfieldRequiredMsg">please enter your first name.</span></span></label>
      </span> <span class="style14"><span class="style17"></span></span></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"> <span class="style23"><span class="style17 style22">* </span></span><span class="style7">Last name:</span></td>
      <td><span id="sprytextfield2">
        <label></label>
        <span id="sprytextfield7">
        <label>
        <input name="lname" type="text" id="lname" size="32" />
        </label>
      <span class="textfieldRequiredMsg"><span id="sprytextfield8">please enter your last name</span>.</span></span></span></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"><span class="style7">Date of birth:</span></td>
      <td><label>
        <input type="text" name="DOB" id="DOB" />
        <br />
        <span class="style15">e.g. yyyy-mm-dd</span></label></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"><span class="style7">Gender:</span></td>
      <td><table width="100" border="0">
        <tr>
          <th scope="row"><div align="left"><span class="style14"></span> <span class="style14">
            <input type="radio" name="radio" id="male2" value="male" />
            male</span><span class="style14"></span></div></th>
        </tr>
        <tr>
          <th scope="row"> <div align="left"> <span class="style14">
            <input type="radio" name="radio" id="female2" value="female" />
            female</span></div></th>
        </tr>
      </table></td>
    </tr>
    <tr>
      <td colspan="2" align="right" valign="baseline" nowrap="nowrap"><h3 align="left" class="style20">My login </h3></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"><span class="style23"><span class="style23"><span class="style17 style22">*</span></span></span><span class="style7"> Username:</span></td>
      <td><label><span id="sprytextfield3">
      <input type="text" name="username" id="username" />
      <span id="sprytextfield9"><span class="textfieldRequiredMsg">please enter your username</span></span></span><span class="style14 style15"><br />
          Your username is used to recognise you during log in<br />
        </span></label></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"><span class="style23"><span class="style23"><span class="style17 style22">*</span></span></span><span class="style7"> Password:</span></td>
      <td><label><span id="sprytextfield4">
            <input type="password" name="password" id="password" />
        <span class="textfieldRequiredMsg">A value is required.</span></span><span class="style14 style15"><br />
          please type your password carefully.</span></label></td>
    </tr>
    <tr>
      <td colspan="2" align="right" valign="baseline" nowrap="nowrap"><h3 align="left" class="style19">My contact details</h3></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"><span class="style23"><span class="style23"><span class="style17 style22">*</span></span></span><span class="style7"> Email:</span></td>
      <td><label><span id="sprytextfield5">
      <input type="text" name="email" id="email" />
      <span class="textfieldRequiredMsg">please enter your email address.</span></span><br />
        <span class="style14 style15">please type your password carefully.</span><br />
      </label></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"><span class="style7">Mobile:</span></td>
      <td><label>
        <input name="mobile" type="text" id="mobile" />
      </label></td>
    </tr>
    <tr>
      <td colspan="2" align="right" valign="baseline" nowrap="nowrap"><h3 align="left" class="style19">My address</h3></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"><span class="style7">Address Street:</span></td>
      <td><label>
        <input name="addressStreet" type="text" id="addressStreet" size="40" />
      </label></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"><span class="style7">Town:</span></td>
      <td><label>
        <input type="text" name="town" id="town" />
      </label></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"><span class="style7">Country:</span></td>
      <td><label>
        <select name="country">
          <option value="Afghanistan" selected="selected">Afghanistan</option>
          <option value="ÅLand Islands">ÅLand Islands</option>
          <option value="Albania">Albania</option>
          <option value="Algeria">Algeria</option>
          <option value="American Samoa">American Samoa</option>
          <option value="Andorra">Andorra</option>
          <option value="Angola">Angola</option>
          <option value="Anguilla">Anguilla</option>
          <option value="Antarctica">Antarctica</option>
          <option value="Antigua And Barbuda">Antigua And Barbuda</option>
          <option value="Argentina">Argentina</option>
          <option value="Armenia">Armenia</option>
          <option value="Aruba">Aruba</option>
          <option value="Australia">Australia</option>
          <option value="Austria">Austria</option>
          <option value="Azerbaijan">Azerbaijan</option>
          <option value="Bahamas">Bahamas</option>
          <option value="Bahrain">Bahrain</option>
          <option value="Bangladesh">Bangladesh</option>
          <option value="Barbados">Barbados</option>
          <option value="Belarus">Belarus</option>
          <option value="Belgium">Belgium</option>
          <option value="Belize">Belize</option>
          <option value="Benin">Benin</option>
          <option value="Bermuda">Bermuda</option>
          <option value="Bhutan">Bhutan</option>
          <option value="Bolivia">Bolivia</option>
          <option value="Bosnia And Herzegovina">Bosnia And Herzegovina</option>
          <option value="Botswana">Botswana</option>
          <option value="Bouvet Island">Bouvet Island</option>
          <option value="Brazil">Brazil</option>
          <option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
          <option value="Brunei Darussalam">Brunei Darussalam</option>
          <option value="Bulgaria">Bulgaria</option>
          <option value="Burkina Faso">Burkina Faso</option>
          <option value="Burundi">Burundi</option>
          <option value="Cambodia">Cambodia</option>
          <option value="Cameroon">Cameroon</option>
          <option value="Canada">Canada</option>
          <option value="Cape Verde">Cape Verde</option>
          <option value="Cayman Islands">Cayman Islands</option>
          <option value="Central African Republic">Central African Republic</option>
          <option value="Chad">Chad</option>
          <option value="Chile">Chile</option>
          <option value="China">China</option>
          <option value="Christmas Island">Christmas Island</option>
          <option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
          <option value="Colombia">Colombia</option>
          <option value="Comoros">Comoros</option>
          <option value="Congo">Congo</option>
          <option value="Congo, The Democratic Republic Of The">Congo, The Democratic Republic Of The</option>
          <option value="Cook Islands">Cook Islands</option>
          <option value="Costa Rica">Costa Rica</option>
          <option value="Cote D'Ivoire">Cote D'Ivoire</option>
          <option value="Croatia">Croatia</option>
          <option value="Cuba">Cuba</option>
          <option value="Cyprus">Cyprus</option>
          <option value="Czech Republic">Czech Republic</option>
          <option value="Denmark">Denmark</option>
          <option value="Djibouti">Djibouti</option>
          <option value="Dominica">Dominica</option>
          <option value="Dominican Republic">Dominican Republic</option>
          <option value="Ecuador">Ecuador</option>
          <option value="Egypt">Egypt</option>
          <option value="El Salvador">El Salvador</option>
          <option value="Equatorial Guinea">Equatorial Guinea</option>
          <option value="Eritrea">Eritrea</option>
          <option value="Estonia">Estonia</option>
          <option value="Ethiopia">Ethiopia</option>
          <option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
          <option value="Faroe Islands">Faroe Islands</option>
          <option value="Fiji">Fiji</option>
          <option value="Finland">Finland</option>
          <option value="France">France</option>
          <option value="French Guiana">French Guiana</option>
          <option value="French Polynesia">French Polynesia</option>
          <option value="French Southern Territories">French Southern Territories</option>
          <option value="Gabon">Gabon</option>
          <option value="Gambia">Gambia</option>
          <option value="Georgia">Georgia</option>
          <option value="Germany">Germany</option>
          <option value="Ghana">Ghana</option>
          <option value="Gibraltar">Gibraltar</option>
          <option value="Greece">Greece</option>
          <option value="Greenland">Greenland</option>
          <option value="Grenada">Grenada</option>
          <option value="Guadeloupe">Guadeloupe</option>
          <option value="Guam">Guam</option>
          <option value="Guatemala">Guatemala</option>
          <option value="Guernsey">Guernsey</option>
          <option value="Guinea">Guinea</option>
          <option value="Guinea-Bissau">Guinea-Bissau</option>
          <option value="Guyana">Guyana</option>
          <option value="Haiti">Haiti</option>
          <option value="Heard Island And Mcdonald Islands">Heard Island And Mcdonald Islands</option>
          <option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
          <option value="Honduras">Honduras</option>
          <option value="Hong Kong">Hong Kong</option>
          <option value="Hungary">Hungary</option>
          <option value="Iceland">Iceland</option>
          <option value="India">India</option>
          <option value="Indonesia">Indonesia</option>
          <option value="Iran">Iran</option>
          <option value="Iraq">Iraq</option>
          <option value="Ireland">Ireland</option>
          <option value="Isle Of Man">Isle Of Man</option>
          <option value="Occupied palestine">Occupied palestine</option>
          <option value="Italy">Italy</option>
          <option value="Jamaica">Jamaica</option>
          <option value="Japan">Japan</option>
          <option value="Jersey">Jersey</option>
          <option value="Jordan">Jordan</option>
          <option value="Kazakhstan">Kazakhstan</option>
          <option value="Kenya">Kenya</option>
          <option value="Kiribati">Kiribati</option>
          <option value="Democratic People'S Republic Of Korea">Democratic People'S Republic Of Korea</option>
          <option value="Republic Of Korea">Republic Of Korea</option>
          <option value="Kuwait">Kuwait</option>
          <option value="Kyrgyzstan">Kyrgyzstan</option>
          <option value="Lao People'S Democratic Republic">Lao People'S Democratic Republic</option>
          <option value="Latvia">Latvia</option>
          <option value="Lebanon">Lebanon</option>
          <option value="Lesotho">Lesotho</option>
          <option value="Liberia">Liberia</option>
          <option value="Libyan Arab Jamahiriya">Libyan Arab Jamahiriya</option>
          <option value="Liechtenstein">Liechtenstein</option>
          <option value="Lithuania">Lithuania</option>
          <option value="Luxembourg">Luxembourg</option>
          <option value="Macao">Macao</option>
          <option value="Madagascar">Madagascar</option>
          <option value="Malawi">Malawi</option>
          <option value="Malaysia">Malaysia</option>
          <option value="Maldives">Maldives</option>
          <option value="Mali">Mali</option>
          <option value="Malta">Malta</option>
          <option value="Marshall Islands">Marshall Islands</option>
          <option value="Martinique">Martinique</option>
          <option value="Mauritania">Mauritania</option>
          <option value="Mauritius">Mauritius</option>
          <option value="Mayotte">Mayotte</option>
          <option value="Mexico">Mexico</option>
          <option value="Micronesia">Micronesia</option>
          <option value="Moldova">Moldova</option>
          <option value="Monaco">Monaco</option>
          <option value="Mongolia">Mongolia</option>
          <option value="Montserrat">Montserrat</option>
          <option value="Morocco">Morocco</option>
          <option value="Mozambique">Mozambique</option>
          <option value="Myanmar">Myanmar</option>
          <option value="Namibia">Namibia</option>
          <option value="Nauru">Nauru</option>
          <option value="Nepal">Nepal</option>
          <option value="Netherlands">Netherlands</option>
          <option value="Netherlands Antilles">Netherlands Antilles</option>
          <option value="New Caledonia">New Caledonia</option>
          <option value="New Zealand">New Zealand</option>
          <option value="Nicaragua">Nicaragua</option>
          <option value="Niger">Niger</option>
          <option value="Nigeria">Nigeria</option>
          <option value="Niue">Niue</option>
          <option value="Norfolk Island">Norfolk Island</option>
          <option value="Northern Mariana Islands">Northern Mariana Islands</option>
          <option value="Norway">Norway</option>
          <option value="Oman">Oman</option>
          <option value="Pakistan">Pakistan</option>
          <option value="Palau">Palau</option>
          <option value="Panama">Panama</option>
          <option value="Papua New Guinea">Papua New Guinea</option>
          <option value="Paraguay">Paraguay</option>
          <option value="Peru">Peru</option>
          <option value="Philippines">Philippines</option>
          <option value="Pitcairn">Pitcairn</option>
          <option value="Poland">Poland</option>
          <option value="Portugal">Portugal</option>
          <option value="Puerto Rico">Puerto Rico</option>
          <option value="Qatar">Qatar</option>
          <option value="Reunion">Reunion</option>
          <option value="Romania">Romania</option>
          <option value="Russian Federation">Russian Federation</option>
          <option value="Rwanda">Rwanda</option>
          <option value="Saint Helena">Saint Helena</option>
          <option value="Saint Kitts And Nevis">Saint Kitts And Nevis</option>
          <option value="Saint Lucia">Saint Lucia</option>
          <option value="Saint Pierre And Miquelon">Saint Pierre And Miquelon</option>
          <option value="Saint Vincent And The Grenadines">Saint Vincent And The Grenadines</option>
          <option value="Samoa">Samoa</option>
          <option value="San Marino">San Marino</option>
          <option value="Sao Tome And Principe">Sao Tome And Principe</option>
          <option value="Saudi Arabia">Saudi Arabia</option>
          <option value="Senegal">Senegal</option>
          <option value="Serbia And Montenegro">Serbia And Montenegro</option>
          <option value="Seychelles">Seychelles</option>
          <option value="Sierra Leone">Sierra Leone</option>
          <option value="Singapore">Singapore</option>
          <option value="Slovakia">Slovakia</option>
          <option value="Slovenia">Slovenia</option>
          <option value="Solomon Islands">Solomon Islands</option>
          <option value="Somalia">Somalia</option>
          <option value="South Africa">South Africa</option>
          <option value="South Georgia And The South Sandwich Islands">South Georgia And The South Sandwich Islands</option>
          <option value="Spain">Spain</option>
          <option value="Sri Lanka">Sri Lanka</option>
          <option value="Sudan">Sudan</option>
          <option value="Suriname">Suriname</option>
          <option value="Svalbard And Jan Mayen">Svalbard And Jan Mayen</option>
          <option value="Swaziland">Swaziland</option>
          <option value="Sweden">Sweden</option>
          <option value="Switzerland">Switzerland</option>
          <option value="Syrian Arab Republic">Syrian Arab Republic</option>
          <option value="Taiwan">Taiwan</option>
          <option value="Tajikistan">Tajikistan</option>
          <option value="Tanzania">Tanzania</option>
          <option value="Thailand">Thailand</option>
          <option value="Timor-Leste">Timor-Leste</option>
          <option value="Togo">Togo</option>
          <option value="Tokelau">Tokelau</option>
          <option value="Tonga">Tonga</option>
          <option value="Trinidad And Tobago">Trinidad And Tobago</option>
          <option value="Tunisia">Tunisia</option>
          <option value="Turkey">Turkey</option>
          <option value="Turkmenistan">Turkmenistan</option>
          <option value="Turks And Caicos Islands">Turks And Caicos Islands</option>
          <option value="Tuvalu">Tuvalu</option>
          <option value="Uganda">Uganda</option>
          <option value="Ukraine">Ukraine</option>
          <option value="United Arab Emirates">United Arab Emirates</option>
          <option value="United Kingdom">United Kingdom</option>
          <option value="United States">United States</option>
          <option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
          <option value="Uruguay">Uruguay</option>
          <option value="Uzbekistan">Uzbekistan</option>
          <option value="Vanuatu">Vanuatu</option>
          <option value="Venezuela">Venezuela</option>
          <option value="Viet Nam">Viet Nam</option>
          <option value="Virgin Islands, British">Virgin Islands, British</option>
          <option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
          <option value="Wallis And Futuna">Wallis And Futuna</option>
          <option value="Western Sahara">Western Sahara</option>
          <option value="Yemen">Yemen</option>
          <option value="Zambia">Zambia</option>
          <option value="Zimbabwe">Zimbabwe</option>
        </select>
      </label></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"><span class="style7">Postcode:</span></td>
      <td><label>
        <input type="text" name="postcode" id="postcode" />
      </label></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"> </td>
      <td> </td>
    </tr>
    <tr>
      <td colspan="2" align="right" valign="baseline" nowrap="nowrap"><div align="left">
        <p><span class="style20"><strong>My payment</strong></span><br />
        </p>
        </div></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"><span class="style7"><span class="style17 style22">*</span> Card holder name:</span></td>
      <td><span id="sprytextfield12">
        <label>
        <input name="cardholder" type="text" id="cardholder" maxlength="40" />
        </label>
      <span class="textfieldRequiredMsg">A value is required.</span></span></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"><span class="style7"><span class="style17 style22">*</span> Credit card number:</span></td>
      <td><span id="sprytextfield10">
        <label>
        <input name="creditno" type="text" id="credit" size="20" maxlength="20" />
        </label>
      <span class="textfieldRequiredMsg">A value is required.</span></span></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap" class="style7"><span class="style17 style22">*</span> Payment type:</td>
      <td><span id="spryselect1">
        <label>
        <select name="paymenttype" id="paymenttype">
          <option value="Visa">Visa</option>
          <option value="Mastercard">Mastercard</option>
          <option value="American Express">American Express</option>
          <option value="Discover Netwrok">Discover Netwrok</option>
                </select>
        </label>
      <span class="selectRequiredMsg">Please select an item.</span></span> <img src="/abha_hotel/images/icon_paypalvisamc.jpg" alt="" width="137" height="22" /></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap" class="style7"><span class="style17 style22">*</span> Expiration date:</td>
      <td><span id="spryselect2">
        <select name="CCExpiresMonth" >
          <option value="" selected="selected">--Month-- </option>
          <option value="01">January</option>
          <option value="02">February</option>
          <option value="03">March</option>
          <option value="04">April</option>
          <option value="05">May</option>
          <option value="06">June</option>
          <option value="07">July</option>
          <option value="08">August</option>
          <option value="09">September</option>
          <option value="10">October</option>
          <option value="11">November</option>
          <option value="12">December</option>
        </select>
        <span class="selectRequiredMsg">Please select an item.</span></span>
/
<span id="spryselect3">
<select name="CCExpiresYear">
  <option value="" selected="selected">--Year-- </option>
  <option value="10">2010 </option>
  <option value="11">2011 </option>
  <option value="12">2012 </option>
  <option value="13">2013 </option>
  <option value="14">2014 </option>
  <option value="15">2015 </option>
  <option value="16">2016 </option>
  <option value="17">2017 </option>
  <option value="18">2018</option>
  <option value="19">2019 </option>
  <option value="20">2020 </option>
</select>
<span class="selectRequiredMsg">Please select an item.</span></span></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap" class="style7"><span class="style17 style22">*</span> CVV:</td>
      <td><span id="sprytextfield11">
        <label>
        <input name="cvv" type="password" id="cvv" size="5" maxlength="3" />
        </label>
      <span class="textfieldRequiredMsg">A value is required.</span></span> <span class="style18 style26">Card verification value code(CVV), last 3 digits on the back of your credit card</span></td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"> </td>
      <td> </td>
    </tr>
    <tr>
      <td align="right" valign="baseline" nowrap="nowrap"> </td>
      <td> </td>
    </tr>
    <tr>
      <td colspan="2" align="right" valign="baseline" nowrap="nowrap"><span class="style8">
        <label>
        </span>
          <div align="center"> <span class="style8">
            <input type="submit" name="register" id="register" value="register" />
            <input type="reset" name="reset" id="reset" value="Reset" />
            <label></label>
          </span></div>
      <span class="style8">
          </label>
        </span></td>
    </tr>
    <tr>
      <td colspan="2" align="right" valign="baseline" nowrap="nowrap"> </td>
    </tr>
    <tr>
      <td colspan="2" align="right" valign="baseline" nowrap="nowrap" bgcolor="#000033"><div align="left" class="style24">Copyright © Abha hotel 2010</div></td>
    </tr>
  </table>
</form>
<script type="text/javascript">
<!--
var sprytextfield6 = new Spry.Widget.ValidationTextField("sprytextfield6");
var sprytextfield7 = new Spry.Widget.ValidationTextField("sprytextfield7");
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3");
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4");
var sprytextfield5 = new Spry.Widget.ValidationTextField("sprytextfield5");
var spryselect1 = new Spry.Widget.ValidationSelect("spryselect1");
var spryselect2 = new Spry.Widget.ValidationSelect("spryselect2");
var spryselect3 = new Spry.Widget.ValidationSelect("spryselect3");
var sprytextfield10 = new Spry.Widget.ValidationTextField("sprytextfield10");
var sprytextfield11 = new Spry.Widget.ValidationTextField("sprytextfield11");
var sprytextfield12 = new Spry.Widget.ValidationTextField("sprytextfield12");
//-->
</script>
</body>
</html>

تم تعديل هذه المشاركة بواسطة سيد الاحساس في 18 أغسطس 2010 في 11:51

#7
سيد الاحساس كتب:

أنا اخزن الباسوورد كماهي بدون تشفير md5 مع ان الدرس الذي طبقته كان متطلب أني اشفر md5 بس ما سويتها ..

طالما أنها بدون تشفير، فهل تأكدت بأنك تقوم بإدخال كلمات السر بالطريقة التي يجب أن تتم ؟

قم بإجراء التعديل التالي للتأكد:

echo 'oldpass: ' . $oldpass;
echo 'oldpassdb: ' . $oldpassdb;
if ($oldpass == $oldpassdb) {

حتى تستطيع رؤية ما يتم مطابقته.

سيد الاحساس كتب:

الحين هل تنصحني بتشفير الباسوورد بطريقة md5؟؟

طبعاً، لا يجب أن يتم حفظ كلمة السر كما هي في قاعدة البيانات فلو تمكن أحد من سرقة القاعدة سيحصل على جميع كلمات سر المستخدمين فوراً، وإن تمكن من إيجاد ثغرة (وفي الكود الذي تستخدمه يوجد ثغرات كثيرة ;)) فسيتمكن من الحصول على كلمات السر جميعها دون عناء...

استخدم MD5 أو أي خوارزمية hash أخرى مثل SHA1 فهي أمتن من MD5 (أو استخدم MD5 مرتين مع salt .. مثلاً MD5_hash(MD5_hash(combine(password,salt))))

سيد الاحساس كتب:

وماهي الصفحات التي لابد أن اعدل عليها ؟؟

هل هي صفحة تغيير الباسوورد change_password.php وصفحة التسجيل reg2.php فقط ؟؟

جميع الصفحات التي يتم فيها التعامل مع كلمة السر.

إن كنت تريد أن تخزن كلمة السر فعليك تشفيرها وتخزين القيمة المشفّرة.

إن كنت تريد قراءة كلمة السر لسبب ما (تغييرها مثلاً، فعليك احتساب تشفير كلمة السر الجديدة بذات الخوارزمية ومن ثم تقوم بمطابقة كلمة_السر_المشفرة_1 مع كلمة_السر_المشفرة_2)

للتذكير فإن خوارزميات MD5, SHA1 وغيرها هي خوارزميات hash functions وهي one way encryption أي أن النص المشفر لا يمكن فك تشفيره بأي حال من الأحوال فلو طلب مستخدم استعادة كلمة السر إلى بريده ستحتاج إلى كتابة صفحة يتم من خلالها توليد hash عشوائي خاص بكلمة سر عشوائية وترسل له كلمة السر الجديدة أما القديمة فلن يكون بإمكانك إرسالها له إطلاقاً، وهذا أفضل أمنياً بكل الأحوال.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#8

انا سويت اللي قلت لي عليه واضفت الكود :

echo 'oldpass: ' . $oldpass;
echo 'oldpassdb: ' . $oldpassdb;
if ($oldpass == $oldpassdb) {

طبعاً ظهر لي الناتج:

oldpass: temp
oldpassdb: 
Old password does not match

و يظهر هنا انه طبع الباسوورد الحالي ولكن لم يطبع الجديد؟؟ لا أدري لماذا ؟ اتوقع اني راح اشفر md5 عشان يضبط ..

تعبانك معنا والله اخوي Xacker

#9

أجري التعديل المؤقت التالي وأخبرني ماذا يظهر

$queryget= mysql_query("SELECT password FROM customers WHERE username='$username'") or die ("Query doesn't work");
if (!$queryget) {
	echo 'Could not successfully run query ($sql) from DB: ' . mysql_error(); exit;
}
if (mysql_num_rows($queryget) == 0) {
	echo 'No rows found, nothing to print so am exiting'; exit;
}
while ($row = mysql_fetch_assoc($queryget)) {
	echo $row["password"];
}

تم تعديل هذه المشاركة بواسطة Xacker في 18 أغسطس 2010 في 14:02

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#10

النتيجة هي:

No rows found, nothing to print so am exiting
#11
سيد الاحساس كتب:

النتيجة هي:

No rows found, nothing to print so am exiting

استعرض قاعدة البيانات لديك وتأكد من وجود سجل لمستخدم واحد على الأقل، قد لا يكون تم إدراجه من الصفحات السابقة لخطأ ما أو نسيت إدراجه بشكل يدوي للاختبار.

تم تعديل هذه المشاركة بواسطة Xacker في 18 أغسطس 2010 في 15:21

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#12

في جملة الاستعلام الشرط:

 $queryget= mysql_query("SELECT password FROM customers WHERE username='$username'") or die ("Query doesn't work");

المتغير username لا يوجد له قيمة، وإذا بتأخذ القيمة من السشن كما في أعلى الكود، فالمتغير هو user.

تم تعديل هذه المشاركة بواسطة محمد الصقري في 18 أغسطس 2010 في 20:34

#13
Xacker كتب:

استعرض قاعدة البيانات لديك وتأكد من وجود سجل لمستخدم واحد على الأقل، قد لا يكون تم إدراجه من الصفحات السابقة لخطأ ما أو نسيت إدراجه بشكل يدوي للاختبار.

تم تجربة طباعة سجل من قاعدة البيانات ونجحت التجربة :)

يعطيك العافية وكل الشكر والتقدير لك .. كل عام وانت بخير أخي Xacker

#14
سيد الاحساس كتب:

تم تجربة طباعة سجل من قاعدة البيانات ونجحت التجربة :)

يعطيك العافية وكل الشكر والتقدير لك .. كل عام وانت بخير أخي Xacker

جيد :)

الله يعافيك، وكل عام وأنت بخير أيضاً.

نصائح: جميع الأجزاء الحساسة فيما وضعته من كود ضمن هذا الموضوع قم بتغييره نوعاً ما لو كان خاص بتطبيق تجاري تريد بيعه أو تقوم بتصميمه لأحد ما (لأني أرى اسم فندق أبها) -- حتى لا تكون هذه الأجزاء الحساسة مكشوفة للعامة.

لا تخزن كلمات السر كما هي إطلاقاً بل ابحث في موضوع استخدام hash functions لتخزين الـ hash الخاص بكلمة السر بدلاً منها.

انتبه من ثغرات SQL في الشفرة الخاصة بك وابحث في مواضيع SQL injection وقم بفلترة أي قيمة يتم جلبها من user side مثل أسماء المستخدمين/كلمات السر/اسم الدولة/المدينة/التاريخ .. أي شئ يتم جلبه من user side يجب أن تتم فلترته بصورة صحيحة حتى لا تتعرض لهجمات SQL injection لأن الكود الحالي الذي تقوم باستخدامه يحوي العديد منها.

رمضان كريم.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

مواضيع مشابهة