كيفة تشفير كلمة اسر

سما • منذ 8 سنوات

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

استخدمت md5 لعمل encryption لكلمة السر 

$passwordmd5 = md5($password);		
				$sql = "INSERT INTO users (name,username,password,email,phone) VALUES('$name','$username','$passwordmd5','$email','$phone')";

كيف ممكن اعمل decryption ?!

 

وكيف ممكن اضيف للكود ب validation  ,, مثال للإيميل ؟!

 

 

  

register.php

كلمات دليلية:

ساعد بالإجابة

"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."

الإجابات (6)

منصور العتيبي • منذ 8 سنوات

تفضل الطريقة 


if (isset($_POST["username"]) && isset($_POST["password"]))
{
	$username = $_POST["username"];
	$password = md5($_POST["password"]);

	$finduser = "SELECT * FROM users
		WHERE username = '$username'
		AND password = '$password'";

	$result = @mysql_query($finduser);
	if (@mysql_num_rows($result) == 1) {
		$row = mysql_fetch_array($result,MYSQLI_ASSOC);
		echo $row["username"];
	}
}

 

Ali Majrashi • منذ 8 سنوات

مثل ماجاوب @منصور العتيبي للتحقق يتم تشفير الرقم السري ثم التحقق من وجود العضو باستخدام الاسم المدخل ثم الرقم السري بعد التشفير هذه الطريقة المستخدمة 

بالنسبة لتشفير كلمات السر باستخدام md5 فهو نظام قديم وغير آمن واصبح سهل فكه ينصح باستخدام password one-way hashing algorithm اخرى هنا شرح لدالة pasword_hash افتراضيا الدالة راح تستخدم اقوى نظام للتشفير حاليا المستخدم bcrypt 

اذا كان فيه استفسار آخر ياريت يتم توضيحه ليتم الإجابه عليه وشكرا

سما • منذ 8 سنوات

شكرا استاذ منصور واستاذ علي جزاكم الله خير ,, 

ما ذا عن email validation

 كيف بإمكاني اضافته للكود ؟! 

Ali Majrashi • منذ 8 سنوات
21 ساعات مضت, سما said:

شكرا استاذ منصور واستاذ علي جزاكم الله خير ,, 

ما ذا عن email validation

 كيف بإمكاني اضافته للكود ؟! 

بالنسبة email validation اذا كان المقصود تفعيل الحساب عن طريق رسالة بعد التسجيل نحتاج لخطوات بسيطة لتمكين هذه العملية

  1. تغير جدول users واضافة حقلين جديدة 
    1. اول حقل verify_token وهو عبارة عن VARCHAR بطول 60 حرف
    2. وثاني حقل active ويكون عبارة عن TINYINT ويقبل تخزين رقم واحد فقط اما 0 او 1 القيمة الافتراضية 0
  2. نغير على ملف register.php ونضيف متغير جديد $verify_token يحتوي على ارقام عشوائية ثم تشفيرها باستخدام دالة password_hash 
    ثم عند حفظ بيانات العضو بقاعدة البيانات نخزن قيمة هالمتغير داخل الحقل verify_token وعند انتهاء عملية الحفظ بنجاح نقوم بارسال رسالة للعضو ونطلب منه تفعيل حسابه
  3. داخل هذه الرسالة نقوم بتوليد رابط يوجه المستخدم لملف مثلا verification.php ومع الرابط نضع كود التفعيل الذي قمنا بتخزينه داخل قاعدة البيانات مثال مبسط لشكل الرابط

http://localhost/project-folder/verification.php?verify_token=******

عندما يقوم المستخدم بالضغط على الرابط داخل ملف verification.php نقوم بالبحث عن هذا العضو بقاعدة البيانات بواسطة هذا الكود وفي حالة العثور عليه نقوم بعمل استعلام ثاني ونحدث بيانات العضو التحديث جدا بسيط نحذف الكود ونستبدله بنص فارغ ونقوم بتعديل قيمة الحقل active بقاعدة البيانات ليكون 1 بدلا من 0 هذه طريقة جدا مبسطة لطريقة تفعيل الحسابات ممكن تطويرها واستخدام اكثر من اسلوب وطريقة هي ترجع لك ولمتطلبات مشروعك 

Ali Majrashi • منذ 8 سنوات

هنا عدلت على ملف register.php بشكل مبسط لتوضيح الخطوات بالرد


<?php

//database connection config
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "3alampro-help";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
}

if($_SERVER['REQUEST_METHOD']=='POST'){
		$name = trim($_POST['name']);
		$username = $_POST['username'];
		$password = $_POST['password'];
		$email = $_POST['email'];
		$phone =$_POST['phone'];
		$verify_token = password_hash(rand(), PASSWORD_DEFAULT);
		
		if($name == '' || $username == '' || $password == '' || $email == '' ||$phone ==''){
			echo 'please fill all values';}
		else{
			//require_once('dbConnect.php');
			$sql = "SELECT * FROM users WHERE username='$username' OR email='$email'";
			
					
			$check = mysqli_fetch_array(mysqli_query($conn,$sql));
			
			if(isset($check)){
				echo 'username or email already exist';
			}else{		
			$passwordmd5 = md5($password);		
				$sql = "INSERT INTO users (name,username,password,email,phone,verify_token) VALUES('$name','$username','$passwordmd5','$email','$phone','$verify_token')";
				if(mysqli_query($conn,$sql)){
					// the message
					$msg = "Please verify your email by clicking on this link <a href='http://localhost/3alampro-help/Q33/verification.php?verify_token={$verify_token}'>Verify Email</a>";

					// send email
					mail($email,"verify your email",$msg);

					echo 'successfully registered please verify your email';
				}else{
					echo 'oops! Please try again!';
				}
			}
			mysqli_close($conn);
		}
}else{
echo 'error';
}
?>

مع تعديل اللازم لما يناسبك بعدها كل ماعليك هو انشاء ملف verification.php وهو جدا بسيط يحتوي على استعلامين لقاعدة البيانات الاول يتحقق من وجود اي عضو يحمل كود التفعيل وان وجد العضو نقوم بالاستعلام الثاني الذي عن طريقه نحدث بيانات العضو ونمسح كود التفعيل ونعدل قيمة الحقل active الى 1 من 0 ثم نعرض رسالة للعضو بانه تم التفعيل بنجاح طبعا هذا بشكل مبسط 

سما • منذ 8 سنوات

أشكرك أستاذ علي على هذه المعلومه التي ستكون إضافه جميله في مشروعي ,, 

لكن ما كنت اقصده هو عملية التحقق من الإيميل اذا كان صحيح أو رقم الهاتف , الأسم مثلا يجب أن يتعدى 4 حروف وهكذا .. 

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !