Computer in Hindi | Business in Hindi: php examples
Showing posts with label php examples. Show all posts
Showing posts with label php examples. Show all posts

Sunday, May 16, 2021

sending otp sms in php from localhost using textlocal

May 16, 2021 0
sending otp sms in php from localhost using textlocal

 ओटीपी उपयोगकर्ताओं को मान्य करने का एक प्रभावी तरीका है। इस प्रकार के सत्यापन का व्यापक रूप से बैंकिंग एप्लिकेशन, ई-कॉमर्स सॉफ़्टवेयर और कई अन्य वर्टिकल द्वारा अनुसरण किया जाता है। इस ट्यूटोरियल में, हम यह देखने जा रहे हैं कि PHP का उपयोग करके ओटीपी एसएमएस मोबाइल नंबर सत्यापन कैसे लागू किया जाए।

एप्लिकेशन के माध्यम से एसएमएस भेजने के लिए बाजार में विभिन्न एपीआई उपलब्ध हैं। इस कोड में, मैंने ओटीपी एसएमएस भेजने के लिए टेक्स्टलोकल एपीआई का उपयोग किया है। टेक्स्टलोकल लोकप्रिय एसएमएस सेवाओं में से एक है। यह कई प्रोग्रामिंग भाषाओं के लिए एसएमएस सेवा प्रदान करता है। इसे हमारे एप्लिकेशन प्लेटफॉर्म में एकीकृत करने के लिए एपीआई पीएचपी क्लास डाउनलोड करें।

पिछले ट्यूटोरियल में, हमने देखा कि  how to send otp sms using phpऔर ओटीपी प्रमाणीकरण के साथ लॉगिन करें। टेक्स्टलोकल एपीआई के उपयोग के साथ ओटीपी एसएमएस भेजकर मोबाइल नंबर को सत्यापित करने के लिए, हमें एपीआई कुंजी प्राप्त करने के लिए टेक्स्टलोकल खाता बनाने और लॉगिन करने की आवश्यकता है। इस एपीआई कुंजी का उपयोग बाद में एसएमएस भेजने के लिए एपीआई क्लास को इंस्टेंट करते समय किया जाता है।

Get Mobile Number to Send OTP

इस उदाहरण में, हम दो HTML रूपों का उपयोग करते हैं। एक मोबाइल नंबर प्राप्त करने के लिए और दूसरा ओटीपी प्राप्त करने के लिए है। इन फॉर्मों को जमा करके, AJAX अनुरोध को PHP तक पहुँचने के लिए OTP कोड भेजने और इसे PHP सत्र डेटा के साथ मान्य करने के लिए भेजा जाएगा।


<!DOCTYPE html>
<html>
<head>
<title>How to Implement OTP SMS Mobile Verification in PHP with TextLocal</title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>

	<div class="container">
		<div class="error"></div>
		<form id="frm-mobile-verification">
			<div class="form-heading">Mobile Number Verification</div>

			<div class="form-row">
				<input type="number" id="mobile" class="form-input"
					placeholder="Enter the 10 digit mobile">
			</div>

			<input type="button" class="btnSubmit" value="Send OTP"
				onClick="sendOTP();">
		</form>
	</div>

	<script src="jquery-3.2.1.min.js" type="text/javascript"></script>
	<script src="verification.js"></script>
</body>
</html>


jQuery AJAX Script for sending otp sms in php from localhost using textlocal 

यह जावास्क्रिप्ट फ़ाइल है जिसमें AJAX के माध्यम से ओटीपी भेजने और सत्यापन PHP कोड का अनुरोध करने के लिए कार्य शामिल हैं। ये दोनों फ़ंक्शन उपयुक्त PHP कोड ब्लॉक को निष्पादित करने के लिए उपयुक्त क्रिया पैरामीटर भेजता है। SendOTP () विधि PHP फ़ाइल में मोबाइल नंबर और send_otp क्रिया पैरामीटर भेजती है। इसी तरह, VerifyOTP () विधि उपयोगकर्ता द्वारा दर्ज किए गए OTP कोड को संबंधित क्रिया पैरामीटर के साथ भेजती है।


function sendOTP() {
	$(".error").html("").hide();
	var number = $("#mobile").val();
	if (number.length == 10 && number != null) {
		var input = {
			"mobile_number" : number,
			"action" : "send_otp"
		};
		$.ajax({
			url : 'controller.php',
			type : 'POST',
			data : input,
			success : function(response) {
				$(".container").html(response);
			}
		});
	} else {
		$(".error").html('Please enter a valid number!')
		$(".error").show();
	}
}

function verifyOTP() {
	$(".error").html("").hide();
	$(".success").html("").hide();
	var otp = $("#mobileOtp").val();
	var input = {
		"otp" : otp,
		"action" : "verify_otp"
	};
	if (otp.length == 6 && otp != null) {
		$.ajax({
			url : 'controller.php',
			type : 'POST',
			dataType : "json",
			data : input,
			success : function(response) {
				$("." + response.type).html(response.message)
				$("." + response.type).show();
			},


 Controller.php for sending otp sms in php from localhost using textlocal

यह PHP नियंत्रक वर्ग है जिसे AJAX के माध्यम से एक्सेस किया जाता है। क्लास कंस्ट्रक्टर AJAX कॉल के माध्यम से भेजे गए अनुरोध के आधार पर मोबाइल सत्यापन क्रियाओं को संभालने के लिए फ़ंक्शन को आमंत्रित करता है। यह फ़ंक्शन लक्ष्य मोबाइल पर ओटीपी भेजने और उपयोगकर्ता द्वारा दर्ज किए गए ओटीपी को मान्य करने की प्रक्रिया करता है।


<?php
session_start();
error_reporting(E_ALL & ~ E_NOTICE);
require ('textlocal.class.php');

class Controller
{
    function __construct() {
        $this->processMobileVerification();
    }
    function processMobileVerification()
    {
        switch ($_POST["action"]) {
            case "send_otp":
                
                $mobile_number = $_POST['mobile_number'];
                
                $apiKey = urlencode('YOUR_API_KEY');
                $Textlocal = new Textlocal(false, false, $apiKey);
                
                $numbers = array(
                    $mobile_number
                );
                $sender = 'PHPPOT';
                $otp = rand(100000, 999999);
                $_SESSION['session_otp'] = $otp;
                $message = "Your One Time Password is " . $otp;
                
                try{
                    $response = $Textlocal->sendSms($numbers, $message, $sender);
                    require_once ("verification-form.php");
                    exit();
                }catch(Exception $e){
                    die('Error: '.$e->getMessage());
                }
                break;
                
            case "verify_otp":
                $otp = $_POST['otp'];
                
                if ($otp == $_SESSION['session_otp']) {
                    unset($_SESSION['session_otp']);
                    echo json_encode(array("type"=>"success", "message"=>"Your mobile number is verified!"));
                } else {
                    echo json_encode(array("type"=>"error", "message"=>"Mobile number verification failed"));
                }
                break;
        }
    }
}
$controller = new Controller();
?>


PHP टेक्स्टलोकल ओटीपी एसएमएस मोबाइल सत्यापन आउटपुट
उपयोगकर्ता से मोबाइल नंबर और ओटीपी कोड प्राप्त करने के लिए एचटीएमएल फॉर्म के लिए यह आउटपुट स्क्रीनशॉट है।

sending otp sms in php from localhost using textlocal
sending otp sms in php from localhost using textlocal


Wednesday, January 13, 2021

Email verification in php

January 13, 2021 0
Email verification in php

What Are We Going to Build in Php program?


हम एक अच्छी email verification in php बनाने जा रहे हैं, जहाँ कोई उपयोगकर्ता किसी वेबसाइट के "केवल सेक्शन सेक्शन" में पहुँच प्राप्त करने के लिए एक खाता बना सकता है।

उपयोगकर्ता द्वारा अपना खाता बनाने के बाद, खाता तब तक लॉक रहेगा जब तक उपयोगकर्ता सत्यापन लिंक पर क्लिक नहीं करता है जो उन्हें अपने ईमेल इनबॉक्स में प्राप्त होगा।


1. Build a Sign-Up Page For email verification in php


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

index.php: यह एक मूल रूप के साथ हमारा साइन-अप पृष्ठ है।


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  
<head>
    <title>NETTUTS > Sign up</title>
    <link href="css/style.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <!-- start header div -->
    <div id="header">
        <h3>NETTUTS > Sign up</h3>
    </div>
    <!-- end header div --> 
      
    <!-- start wrap div --> 
    <div id="wrap">
          
        <!-- start php code -->
          
        <!-- stop php code -->
      
        <!-- title and description -->  
        <h3>Signup Form</h3>
        <p>Please enter your name and email addres to create your account</p>
          
        <!-- start sign up form --> 
        <form action="" method="post">
            <label for="name">Name:</label>
            <input type="text" name="name" value="" />
            <label for="email">Email:</label>
            <input type="text" name="email" value="" />
              
            <input type="submit" class="submit_button" value="Sign up" />
        </form>
        <!-- end sign up form -->
          
    </div>
    <!-- end wrap div -->
</body>
</html>


css / style.css: यह index.php और अन्य पृष्ठों के लिए स्टाइलशीट है।


/* Global Styles */
  
*{
    padding: 0; /* Reset all padding to 0 */
    margin: 0; /* Reset all margin to 0 */
}
  
body{
    background: #F9F9F9; /* Set HTML background color */
    font: 14px "Lucida Grande"/* Set global font size & family */
    color: #464646; /* Set global text color */
}
  
p{
    margin: 10px 0px 10px 0px; /* Add some padding to the top and bottom of the <p> tags */
}
  
/* Header */
  
#header{
    height: 45px; /* Set header height */
    background: #464646; /* Set header background color */
}
  
#header h3{
    color: #FFFFF3; /* Set header heading(top left title ) color */
    padding: 10px; /* Set padding, to center it within the header */
    font-weight: normal; /* Set font weight to normal, default it was set to bold */
}
  
/* Wrap */
  
#wrap{
    background: #FFFFFF; /* Set content background to white */
    width: 615px; /* Set the width of our content area */
    margin: 0 auto; /* Center our content in our browser */
    margin-top: 50px; /* Margin top to make some space between the header and the content */
    padding: 10px; /* Padding to make some more space for our text */
    border: 1px solid #DFDFDF; /* Small border for the finishing touch */
    text-align: center; /* Center our content text */
}
  
#wrap h3{
    font: italic 22px Georgia; /* Set font for our heading 2 that will be displayed in our wrap */
}
  
/* Form & Input field styles */
  
form{
    margin-top: 10px; /* Make some more distance away from the description text */
}
  
form .submit_button{
    background: #F9F9F9; /* Set button background */
    border: 1px solid #DFDFDF; /* Small border around our submit button */
    padding: 8px; /* Add some more space around our button text */
}
  
input{
    font: normal 16px Georgia; /* Set font for our input fields */
    border: 1px solid #DFDFDF; /* Small border around our input field */
    padding: 8px; /* Add some more space around our text */


यहां बताया गया है कि जब ब्राउज़र में HTML और CSS दिखते हैं, तो वे किस तरह प्रस्तुत किए जाते हैं।


user registration with email verification
user registration with email verification

जैसा कि आप देख सकते हैं, मैंने प्रत्येक पंक्ति में एक टिप्पणी जोड़ी है जो बताती है कि वे क्या करते हैं। इसके अलावा, आपने index.php फ़ाइल में निम्नलिखित टिप्पणी देखी होगी:



<!-- start php code -->
  
<!-- stop php code -->

हम अपनी PHP को इन दो लाइनों के बीच लिखने जा रहे हैं!

2. Input Validation For email verification code in php


पहली चीज जो हम बनाने जा रहे हैं वह कोड का एक टुकड़ा है जो जानकारी को मान्य करने वाला है। 

यहां एक छोटी सूची का विवरण दिया गया है जिसे मान्य करने की आवश्यकता है।

  •     नाम फ़ील्ड खाली नहीं है
  •     नाम बहुत छोटा नहीं है
  •     ईमेल फ़ील्ड खाली नहीं है
  •     ईमेल पता xxx@xxx.xxx फॉर्म के साथ मान्य है


इसलिए हमारा पहला कदम यह जांचना है कि फॉर्म जमा किया गया है और यह कि खेत खाली नहीं हैं।


<!-- start PHP code -->
<?php
  
    if(isset($_POST['name']) && !empty($_POST['name']) AND isset($_POST['email']) && !empty($_POST['email'])){
        // Form Submited
    }
              
?>
<!-- stop PHP Code -->


ब्रेकडाउन का समय! हम एक IF स्टेटमेंट के साथ शुरू करते हैं, और हम पहले नाम फ़ील्ड को मान्य कर रहे हैं:


if(  ){ // If statement is true run code between brackets
  
}
  
isset($_POST['name']) // Is the name field being posted; it does not matter whether it's empty or filled.
&& // This is the same as the AND in our statement; it allows you to check multiple statements.
!empty($_POST['name']) // Verify if the field name is not empty
  
isset($_POST['email']) // Is the email field being posted; it does not matter if it's empty or filled.
&& // This is the same as the AND in our statement; it allows you to check multiple statements.
!empty($_POST['email']) // Verify if the field email is not empty


इसलिए यदि आप खाली क्षेत्रों के साथ अब फॉर्म जमा करते हैं, तो कुछ भी नहीं होगा। यदि आप दोनों फ़ील्ड भरते हैं, तो हमारी स्क्रिप्ट कोष्ठक के बीच कोड चलाएगी।

अब हम एक कोड कोड बनाने जा रहे हैं जो यह जांच करेगा कि ईमेल पता मान्य है या नहीं। यदि यह नहीं है, तो हम एक त्रुटि वापस करेंगे। इसके अलावा, हम अपने डाक चर को स्थानीय चर में बदल देते हैं:


if(isset($_POST['name']) && !empty($_POST['name']) AND isset($_POST['email']) && !empty($_POST['email'])){
    $name = mysql_escape_string($_POST['name']); // Turn our post into a local variable
    $email = mysql_escape_string($_POST['email']); // Turn our post into a local variable
}


अब हम अपने स्थानीय चर के माध्यम से अपने डेटा तक पहुँच सकते हैं। जैसा कि आप देख सकते हैं, मैंने MySQL डेटाबेस में डेटा सम्मिलित करते समय MySQL इंजेक्शन को रोकने के लिए MySQL एस्केप स्ट्रिंग भी जोड़ा था।

Regular Expressions For email verification in php


अगला एक छोटा स्निपेट है जो यह जांचता है कि ईमेल पता मान्य है या नहीं।


$name = mysql_escape_string($_POST['name']);
$email = mysql_escape_string($_POST['email']);            
              
if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)){
    // Return Error - Invalid Email
}else{
    // Return Success - Valid Email
}


कृपया ध्यान दें कि मैंने व्यक्तिगत रूप से इस नियमित अभिव्यक्ति को नहीं लिखा है - यह php.net से एक छोटा सा स्निपेट है। मूल रूप से, यह सत्यापित करता है कि ईमेल निम्नलिखित प्रारूप में लिखा गया है:

eregi function call में, आप देख सकते हैं कि अगर ईमेल में वर्णमाला के अक्षर हैं, अगर इसकी कोई संख्या है, या एक प्रेत डैश (_) है, और निश्चित रूप से @ @ प्रतीक और ईमेल वाली ईमेल के लिए बुनियादी आवश्यकताएं हैं । डोमेन में। यदि ये विशेषताएँ नहीं मिली हैं, तो अभिव्यक्ति गलत है।

ठीक है, इसलिए अब हमें कुछ बुनियादी त्रुटि संदेश जोड़ने की आवश्यकता है।


if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)){
    // Return Error - Invalid Email
    $msg = 'The email you have entered is invalid, please try again.';
}else{
    // Return Success - Valid Email
    $msg = 'Your account has been made, <br /> please verify it by clicking the activation link that has been send to your email.';
}


जैसा कि आप देख सकते हैं, हमने एक स्थानीय चर $ msg बनाया है, जो हमें पृष्ठ पर कहीं भी त्रुटि या सफलता संदेश दिखाने की अनुमति देता है।

और हम इसे निर्देश पाठ और फ़ॉर्म के बीच प्रदर्शित करने जा रहे हैं।


<!-- title and description -->   
<h3>Signup Form</h3>
<p>Please enter your name and email address to create your account</p>
      
<?php
    if(isset($msg)){  // Check if $msg is not empty
        echo '<div class="statusmsg">'.$msg.'</div>'; // Display our message and wrap it with a div with the class "statusmsg".
    }
?>
      
<!-- start sign up form -->


अंत में, हम अपने स्टेटस मैसेज को थोड़ा स्टाइल करने के लिए, स्टाइल में थोड़ी सीएसएस जोड़ लेंगे।


#wrap .statusmsg{
    font-size: 12px; /* Set message font size  */
    padding: 3px; /* Some padding to make some more space for our text  */
    background: #EDEDED; /* Add a background color to our status message   */
    border: 1px solid #DFDFDF; /* Add a border arround our status message   */
}

email verification in php code
email verification in php


3. Creating the Database & Establishing a Connection


अब हमें डेटाबेस कनेक्शन स्थापित करने और खाता डेटा सम्मिलित करने के लिए एक तालिका बनाने की आवश्यकता है। तो चलिए PHPMyAdmin पर जाते हैं और नाम पंजीकरण के साथ एक नया डेटाबेस बनाते हैं और एक उपयोगकर्ता खाता बनाते हैं जिसमें डेटा डालने और अपडेट करने के लिए उस डेटाबेस तक पहुंच होती है।

चलो छह क्षेत्रों के साथ हमारे उपयोगकर्ता तालिका बनाते हैं:


Create database email verification in php
Create database

अब हमें इन क्षेत्रों के लिए विवरण दर्ज करना होगा:


DB For php verify email
DB For php verify email

जो लोग इस डेटा को मैन्युअल रूप से इनपुट नहीं करना चाहते हैं, उनके लिए आप निम्न SQL कोड चला सकते हैं।

हमारा डेटाबेस बनाया गया है, इसलिए अब हमें PHP का उपयोग करके कनेक्शन स्थापित करने की आवश्यकता है। हम अपनी स्क्रिप्ट की शुरुआत में निम्न लाइन के नीचे, निम्न कोड लिखेंगे:


CREATE TABLE `users` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 32 ) NOT NULL ,
`password` VARCHAR( 32 ) NOT NULL ,
`email` TEXT NOT NULL ,
`hash` VARCHAR( 32 ) NOT NULL ,
`active` INT( 1 ) NOT NULL DEFAULT '0'
) ENGINE = MYISAM ;


हम डेटाबेस सर्वर से कनेक्ट करने के लिए निम्न कोड का उपयोग करेंगे और मूल MySQL कनेक्शन के साथ पंजीकरण डेटाबेस का चयन करेंगे।


<!-- start PHP code -->
<?php
// Establish database connection


अब जब हमने अपने डेटाबेस से कनेक्शन स्थापित कर लिया है, तो हम अगले चरण पर आगे बढ़ सकते हैं और खाता विवरण डाल सकते हैं।


mysql_connect("localhost", "username", "password") or die(mysql_error()); // Connect to database server(localhost) with username and password.
mysql_select_db("registrations") or die(mysql_error()); // Select registrations database.

4. Insert Account For email verification code in php

अब हमारे डेटाबेस में प्रस्तुत खाता विवरण दर्ज करने और सक्रियण हैश उत्पन्न करने का समय है। इस पंक्ति के नीचे निम्नलिखित कोड लिखें:


// Return Success - Valid Email
$msg = 'Your account has been made, <br /> please verify it by clicking the activation link that has been send to your email.';


Activation Hash


हमारे डेटाबेस में, हमने हैश नाम से एक फ़ील्ड बनाया है। यह हैश टेक्स्ट का 32-कैरेक्टर स्ट्रिंग है। हम इस कोड को उपयोगकर्ता के ईमेल पते पर भी भेजते हैं। वे तब लिंक पर क्लिक कर सकते हैं (जिसमें हैश होता है), और हम यह सत्यापित करेंगे कि क्या यह डेटाबेस में मेल खाता है। चलो $ हैश नामक एक स्थानीय चर बनाएं और एक यादृच्छिक MD5 हैश उत्पन्न करें।


$hash = md5( rand(0,1000) ); // Generate random 32 character hash and assign it to a local variable.
// Example output: f4552671f8909587cf485ea990207f3b


हमने क्या किया? खैर, हम 0 और 1000 के बीच एक यादृच्छिक संख्या उत्पन्न करने के लिए PHP फ़ंक्शन रैंड का उपयोग कर रहे हैं। अगला, हमारा एमडी 5 फ़ंक्शन इस संख्या को पाठ के 32-वर्ण स्ट्रिंग में बदल देगा, जिसे हम अपने सक्रियण ईमेल में उपयोग करेंगे।

यादृच्छिक तार पैदा करने के लिए MD5 एक अच्छा विकल्प है। यह हैशिंग पासवर्ड के लिए एक आम विकल्प भी हुआ करता था, लेकिन इसे पासवर्ड के लिए सुरक्षित नहीं दिखाया गया है। इसके बजाय, password_hash फ़ंक्शन का उपयोग करें।


Creating a Random Password For email verification in php


अगली बात हमें अपने सदस्य के लिए एक यादृच्छिक पासवर्ड बनाने की है:


$password = rand(1000,5000); // Generate random number between 1000 and 5000 and assign it to a local variable.
// Example output: 4568


MySQL क्वेरी का उपयोग करके हमारे डेटाबेस में निम्नलिखित जानकारी डालें।


mysql_query("INSERT INTO users (username, password, email, hash) VALUES(
'". mysql_escape_string($name) ."',
'". mysql_escape_string(password_hash($password)) ."',
'". mysql_escape_string($email) ."',
'". mysql_escape_string($hash) ."') ") or die(mysql_error());

जैसा कि आप देख सकते हैं, हम किसी भी MySQL इंजेक्शन को रोकने के लिए MySQL एस्केप स्ट्रिंग के साथ सभी डेटा सम्मिलित करते हैं।

आप यह भी देख सकते हैं कि पासवर्ड_हैश फ़ंक्शन रैंडम पासवर्ड को सुरक्षा के लिए सुरक्षित हैश में बदलता है। इस तरह, यदि दुर्भावनापूर्ण इरादे वाले लोग डेटाबेस तक पहुंच प्राप्त करते हैं, तो वे पासवर्ड नहीं पढ़ पाएंगे।

परीक्षण के लिए, फ़ॉर्म भरें और जांचें कि क्या डेटा हमारे डेटाबेस में डाला जा रहा है।

5. Send the Verification Email

हमारे डेटाबेस में जानकारी डालने के ठीक बाद, हमें सत्यापन लिंक के साथ उपयोगकर्ता को एक ईमेल भेजने की आवश्यकता है। तो चलो बस ऐसा करने के लिए PHP मेल फ़ंक्शन का उपयोग करें।


$to      = $email; // Send email to our user
$subject = 'Signup | Verification'; // Give the email a subject
$message = '
  
Thanks for signing up!
Your account has been created, you can login with the following credentials after you have activated your account by pressing the url below.
  
------------------------
Username: '.$name.'
Password: '.$password.'
------------------------
  
Please click this link to activate your account:
http://www.yourwebsite.com/verify.php?email='.$email.'&hash='.$hash.'
  
'; // Our message above including the link
                      
$headers = 'From:noreply@yourwebsite.com' . "\r\n"; // Set from headers
mail($to, $subject, $message, $headers); // Send our email


ऊपर दिए गए कोड में, हम अपने उपयोगकर्ता को एक संक्षिप्त विवरण भेजते हैं जिसमें उपयोगकर्ता नाम और पासवर्ड शामिल होता है - जब डेटा पोस्ट किया गया था तो हमने जो स्थानीय चर बनाए थे उनका उपयोग करते हुए। फिर हम एक गतिशील लिंक बनाते हैं।

इस सब का परिणाम निम्नानुसार होगा:


email verification in php
email verification in php

जैसा कि आप देख सकते हैं, यह एक URL बनाता है जिसका अनुमान लगाना असंभव है। किसी उपयोगकर्ता के ईमेल पते को सत्यापित करने के लिए यह एक बहुत ही सुरक्षित तरीका है।


6. Account Activation


जैसा कि आप देख सकते हैं, हमारे URL को verify.php से जोड़ते हैं, तो चलिए उस फाइल को उसी मूल टेम्पलेट का उपयोग करके बनाते हैं जिसका हमने index.php के लिए उपयोग किया था।

हालाँकि, टेम्पलेट से प्रपत्र को निकालें।


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  
<head>
    <title>NETTUTS > Sign up</title>
    <link href="css/style.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <!-- start header div -->
    <div id="header">
        <h3>NETTUTS > Sign up</h3>
    </div>
    <!-- end header div -->  
      
    <!-- start wrap div -->  
    <div id="wrap">
        <!-- start PHP code -->
        <?php
          
            mysql_connect("localhost", "tutorial", "password") or die(mysql_error()); // Connect to database server(localhost) with username and password.
            mysql_select_db("registrations") or die(mysql_error()); // Select registration database.
              
        ?>
        <!-- stop PHP Code -->
  
          
    </div>
    <!-- end wrap div -->
</body>
</html>


अगर हमारे पास हमारे $ _GET चर (ईमेल और हैश के लिए) है, तो सबसे पहले हमें यह देखना होगा।


if(isset($_GET['email']) && !empty($_GET['email']) AND isset($_GET['hash']) && !empty($_GET['hash'])){
    // Verify data
}else{
    // Invalid approach
}


चीजों को थोड़ा आसान बनाने के लिए, आइए अपने स्थानीय वेरिएबल्स को असाइन करें। हम MySQL एस्केप स्ट्रिंग का उपयोग करके, एक बार फिर से कुछ MySQL इंजेक्शन की रोकथाम भी जोड़ देंगे।


if(isset($_GET['email']) && !empty($_GET['email']) AND isset($_GET['hash']) && !empty($_GET['hash'])){
    // Verify data
    $email = mysql_escape_string($_GET['email']); // Set email variable
    $hash = mysql_escape_string($_GET['hash']); // Set hash variable
}


अगली बात यह है कि MySQL क्वेरी का उपयोग करके हमारे डेटाबेस में डेटा के विरुद्ध URL से डेटा की जाँच करें


$search = mysql_query("SELECT email, hash, active FROM users WHERE email='".$email."' AND hash='".$hash."' AND active='0'") or die(mysql_error());
$match  = mysql_num_rows($search);


ऊपर दिए गए कोड में, हमने एक MySQL सेलेक्ट स्टेटमेंट का उपयोग किया और यह जांचा कि ईमेल और हैश का मिलान हुआ है या नहीं। लेकिन इसके अलावा, हमने यह भी जांचा कि क्या खाते की स्थिति निष्क्रिय है। अंत में, हम यह निर्धारित करने के लिए कि कितने मैच मिले हैं, mysql_num_rows का उपयोग करते हैं।

तो चलिए इसे आजमाते हैं। परिणामों को वापस करने के लिए बस एक सरल गूंज का उपयोग करें।

$search = mysql_query("SELECT email, hash, active FROM users WHERE email='".$email."' AND hash='".$hash."' AND active='0'") or die(mysql_error());
$match  = mysql_num_rows($search);
  
echo $match; // Display how many matches have been found -> remove this when done with testing ;)

हम एक मैच है! परिणाम बदलने के लिए, बस ईमेल को बदलें, और आप देखेंगे कि लौटा नंबर 0 है।

इसलिए हम खाते को सक्रिय करने के लिए अपने $ मैच चर का उपयोग कर सकते हैं या जब कोई मैच नहीं मिला है तो एक त्रुटि लौटा सकते हैं।


if($match > 0){
    // We have a match, activate the account
}else{
    // No match -> invalid url or account has already been activated.
}


खाते को सक्रिय करने के लिए, हमें MySQL क्वेरी का उपयोग करके सक्रिय फ़ील्ड को 1 में अपडेट करना होगा।


// We have a match, activate the account
mysql_query("UPDATE users SET active='1' WHERE email='".$email."' AND hash='".$hash."' AND active='0'") or die(mysql_error());
echo '<div class="statusmsg">Your account has been activated, you can now login</div>';


इसलिए हम अपडेट के लिए उसी खोज शब्द का उपयोग करते हैं जैसा हमने अपनी MySQL चयन क्वेरी में उपयोग किया था। ईमेल, हैश और सक्रिय फ़ील्ड में सही मान होने पर हम 1 में सक्रिय हो जाते हैं। हम उपयोगकर्ता को यह कहते हुए एक संदेश भी लौटाते हैं कि उनका खाता सक्रिय हो गया है। आप एक संदेश जोड़ सकते हैं जैसे हमने यहां "नो मैच" भाग के लिए किया था।

तो अंतिम कोड निम्नलिखित के समान दिखना चाहिए

यदि आप किसी भी तार के बिना सत्यापन पर जाएँ। निम्न त्रुटि दिखाई जाएगी:


mysql_connect("localhost", "tutorial", "password") or die(mysql_error()); // Connect to database server(localhost) with username and password.
mysql_select_db("registrations") or die(mysql_error()); // Select registration database.
              
if(isset($_GET['email']) && !empty($_GET['email']) AND isset($_GET['hash']) && !empty($_GET['hash'])){
    // Verify data
    $email = mysql_escape_string($_GET['email']); // Set email variable
    $hash = mysql_escape_string($_GET['hash']); // Set hash variable
                  
    $search = mysql_query("SELECT email, hash, active FROM users WHERE email='".$email."' AND hash='".$hash."' AND active='0'") or die(mysql_error());
    $match  = mysql_num_rows($search);
                  
    if($match > 0){
        // We have a match, activate the account
        mysql_query("UPDATE users SET active='1' WHERE email='".$email."' AND hash='".$hash."' AND active='0'") or die(mysql_error());
        echo '<div class="statusmsg">Your account has been activated, you can now login</div>';
    }else{
        // No match -> invalid url or account has already been activated.
        echo '<div class="statusmsg">The url is either invalid or you already have activated your account.</div>';
    }
                  
}else{
    // Invalid approach
    echo '<div class="statusmsg">Invalid approach, please use the link that has been send to your email.</div>';
}


7. Create the Login email verification in php


इस अंतिम चरण में, मैं आपको दिखाऊंगा कि एक मूल लॉगिन फ़ॉर्म कैसे बनाया जाए और यह जांचा जाए कि खाता सक्रिय है या नहीं। सबसे पहले, हम पहले इस्तेमाल किए गए मूल टेम्पलेट के साथ login.php नामक एक नई फ़ाइल बनाएँ, लेकिन इस बार मैंने फ़ॉर्म को लॉगिन फ़ॉर्म में बदल दिया।


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  
<head>
    <title>NETTUTS > Sign up</title>
    <link href="css/style.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <!-- start header div -->
    <div id="header">
        <h3>NETTUTS > Sign up</h3>
    </div>
    <!-- end header div -->  
      
    <!-- start wrap div -->  
    <div id="wrap">
        <!-- start PHP code -->
        <?php
          
            mysql_connect("localhost", "tutorial", "password") or die(mysql_error()); // Connect to database server(localhost) with username and password.
            mysql_select_db("registrations") or die(mysql_error()); // Select registration database.
                  
              
        ?>
        <!-- stop PHP Code -->
      
        <!-- title and description -->   
        <h3>Login Form</h3>
        <p>Please enter your name and password to login</p>
          
        <?php
            if(isset($msg)){ // Check if $msg is not empty
                echo '<div class="statusmsg">'.$msg.'</div>'; // Display our message and add a div around it with the class statusmsg
            } ?>
          
        <!-- start sign up form -->  
        <form action="" method="post">
            <label for="name">Name:</label>
            <input type="text" name="name" value="" />
            <label for="password">Password:</label>
            <input type="password" name="password" value="" />
              
            <input type="submit" class="submit_button" value="Sign up" />
        </form>
        <!-- end sign up form -->
          
    </div>
    <!-- end wrap div -->
</body>
</html>


फ़ॉर्म मूल HTML है और लगभग साइनअप फ़ॉर्म के समान है, इसलिए आगे स्पष्टीकरण की आवश्यकता नहीं है।

अब लॉगिन स्क्रिप्ट के लिए कोड लिखने का समय है। हम इसे MySQL कनेक्शन कोड के ठीक नीचे जोड़ देंगे। हम कुछ के साथ शुरू करते हैं जो हमने साइनअप फॉर्म में भी किया था।

हम पहले यह देखने के लिए जांचें कि क्या डेटा पोस्ट किया जा रहा है, और हम यह सुनिश्चित करते हैं कि यह खाली नहीं है।


if(isset($_POST['name']) && !empty($_POST['name']) AND isset($_POST['password']) && !empty($_POST['password'])) {
    $username = mysql_escape_string($_POST['name']); // Set variable for the username
 
    $result = mysql_fetch_assoc(mysql_query("SELECT password FROM users WHERE active = '1' AND username = '" . $username . "'"));
    $password_hash = (isset($result['password']) ? $result['password'] : '');
    $result = password_verify($_POST['password'], $password_hash);
}


अगला, हमने अपने उपयोगकर्ताओं की तालिका से कनेक्शन बनाया है और सत्यापित किया है कि दर्ज किया गया डेटा सही है या नहीं। हमने एक MySQL क्वेरी लिखी है जो दर्ज उपयोगकर्ता नाम के साथ जुड़े डेटाबेस से पासवर्ड हैश का चयन करेगी। अंत में, हमने इनपुट पासवर्ड को सत्यापित करने के लिए password_verify फ़ंक्शन का उपयोग किया है। यदि उपयोगकर्ता ने सही पासवर्ड दर्ज किया है, तो $ परिणाम में TRUE होता है; अन्यथा, यह FALSE होगा।

और सक्रिय स्थिति महत्वपूर्ण है! यह वह है जो यह सुनिश्चित करता है कि आप केवल तभी लॉग इन कर सकते हैं जब आपका खाता सक्रिय हो गया हो।


if($result){
    $msg = 'Login Complete! Thanks';
    // Set cookie / Start Session / Start Download etc...
}else{
    $msg = 'Login Failed! Please make sure that you enter the correct details and that you have activated your account.';
}


उपरोक्त कोड में, हम जांचते हैं कि लॉगिन सफल रहा या नहीं।