Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

कस्टम उपयोगकर्ता पंजीकरण/लॉगिन स्क्रिप्ट बनाने में सहायता चाहिए

इस उदाहरण के लिए मैं तैयार किए गए बयानों को छोड़ने जा रहा हूं, लेकिन आपको SQL-इंजेक्शन की रोकथाम पर कुछ शोध करने की आवश्यकता होगी।

उपयोगकर्ता को लॉगिन करने के लिए उपयोग करने के लिए सबसे पहले आपको एक फॉर्म की आवश्यकता है। यहां एक बुनियादी है जो NewUser.html नामक पृष्ठ पर होगा:

<form action="AddUser.php" method="POST">
<p>Enter A Username: </p>
<input type="text" name="User" maxlength="20" size="10">
<br />
<p>Enter A Password: </p>
<input type="password" name="Password" maxlength="40" size="10">
<br />
<p>Enter Password Again: </p>
<input type="password" name="PasswordX2" maxlength="40" size="10">
<br />
<input type="submit" value="Create Account">
</form>

आप निश्चित रूप से अन्य फ़ील्ड जैसे ईमेल पता, आदि जोड़ सकते हैं- लेकिन मैं इसे सरल रख रहा हूं।

अब AddUser.php पेज पर चलते हैं:

<?php

//Now let's grab our $_POST data from our form and assign them to variables...
$User = $_POST['User'];
$PW = $_POST['Password'];
$PW2 = $_POST['PasswordX2'];

//Check whether user put anything in the fields for user or passwords
if (!$User || !$PW || !$PW2) {
echo "You have not entered all the needed info. Please try again.";
exit();
}

//Check if passwords match
if ($PW <> $PW2) {
echo "Your passwords do not match. Please go back and try again.";
exit();
}

//Now we want to be good stewards of passwords and information so let's hash that password
$hash = password_hash($PW, PASSWORD_BCRYPT);

//Open your connection to database
$dbconnect-> blah blah(make your database connection here)....

//Now let's insert the new user into the database - remember do not do this without SQL-injection prevention. I'm just giving you the basics.
$sql = "INSERT INTO UsersTable (UserName, Password)
VALUES ('".$User."', '".$hash."')";

//Verify Successful Entry
if (mysqli_query($dbconnect,$sql)) {
echo "User Added Successfully";
} else {
echo "Error Creating User: " . mysqli_error($dbconnect);
}

echo "<br /><p>Please go to the main page to login now.</p>";
?>

तो उपयोगकर्ता अब बनाया गया है, पासवर्ड नमक के साथ धोया गया है और डीबी में डाला गया है ... गंभीरता से एसक्यूएल-इंजेक्शन को मत भूलना।

अब आपके पास एक ऐसा फॉर्म होगा जो लॉग इन करने के लिए NewUser.html फॉर्म के समान है, लेकिन इसके लिए पासवर्ड को दो बार दर्ज करने की आवश्यकता नहीं होगी। मान लें कि लॉगिन फॉर्म उपयोगकर्ता को login.php नामक पेज पर भेजता है:

<?php
session_start(); //starts a session for tracking user on each page - this has to be on every page

//Let's get our variables from the POST data- will be identical to before most likely
$User = $_POST['User'];
$PW = $_POST['Password'];

//Open your connection to database
$dbconnect-> blah blah(make your database connection here)....

//Let's see if the username and password matches what we have in the database
$sql = "SELECT UsersTable.UserName, UsersTable.Password
FROM UsersTable
WHERE UsersTable.UserName = '$User'";
$result = $dbconnect->query($sql);

//Let's get the hashed password that corresponds to that username
$row = $result->fetch_assoc();
$HashedPassword = $row['Password'];

//Let's verify the password is correct
if (password_verify($PW, $HashedPassword))
{

//if it is correct(true) this will now happen
$_SESSION['verified_user'] = $User; //registers user by storing it in a SESSION
}
else {
echo "Login failed. Try again.";
exit();
}
?>

बस एक टिप, यदि आप एक्सेस स्तर जोड़ना चाहते हैं तो आप डेटाबेस में एक एक्सेस नंबर (उदा:1, 2, 3) के साथ एक जगह स्टोर कर सकते हैं और फिर सफलतापूर्वक लॉग इन करने पर आपको एक और $_SESSION असाइन करना होगा जो उनके एक्सेस स्तर का प्रतिनिधित्व करता है और उन्हें आपके द्वारा अनुमत कुछ अनुभागों तक पहुंच प्रदान करता है।

अब जब वे आपकी साइट के अन्य पृष्ठों पर नेविगेट करेंगे तो उनका सत्र इस प्रकार सत्यापित होगा:

उदाहरणपेज.php

<?php
session_start();

if (isset($_SESSION['verified_user'])) {
//User is verified and whatever is here will be visible and happen- YAY!
}
else {
echo "You are not logged in and cannot see this page.";
}
?>

बस प्रत्येक पृष्ठ पर एक सत्र शुरू करने की आदत डालें जहां केवल लॉग इन करने वालों द्वारा ही पहुंच की अनुमति है। सत्रों को पृष्ठ से पृष्ठ पर याद किया जाता है।

उन्हें एक लॉगआउट पृष्ठ देना न भूलें जो सत्र को नष्ट कर देगा:logout.php

<?php
session_start();

unset($_SESSION['verified_user']);
session_destroy();
echo "You are logged out.";
?>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एकाधिक पंक्तियों में अधिकतम मान के आधार पर एकल पंक्ति का चयन कैसे करें

  2. MySQLdb मॉड्यूल लोड करने में त्रुटि और पाइप MySQLdb स्थापित करें

  3. mysql में पासवर्ड सेव करने का बेहतर तरीका जिसे php . का उपयोग करके भी डिक्रिप्ट किया जा सकता है

  4. अगले महीने की पहली और आखिरी तारीख MySQL में पाएं

  5. चेतावनी:mysql_query ():आपूर्ति किया गया तर्क मान्य MySQL-Link संसाधन नहीं है