2012-04-10 15 views
29

में सत्र और सत्र चर का उपयोग करना मैंने अभी एक संपूर्ण लॉगिन बनाना समाप्त कर दिया है और PHP में systsem पंजीकृत किया है, लेकिन मेरी समस्या यह है कि मैंने अभी तक किसी भी सत्र का उपयोग नहीं किया है। मैं PHP में एक नौसिखिया हूं और मैंने पहले कभी सत्रों का उपयोग नहीं किया है। मैं क्या करना चाहता हूं, उपयोगकर्ता पंजीकरण के बाद और लॉगिन फॉर्म भरने के बाद, वे अभी भी उसी पृष्ठ पर रहेंगे। इसलिए, सत्र का लॉग-इन होगा और दूसरा हिस्सा अन्य होगा (उपयोगकर्ता लॉग इन नहीं है इसलिए लॉग इन फॉर्म प्रदर्शित करें) का एक हिस्सा होगा। क्या कोई मुझे बता सकता है कि कैसे शुरू किया जाए?PHP लॉगिन स्क्रिप्ट

+2

"आप एक पूरी किताब है कि आपके सवाल का जवाब कल्पना कर सकते हैं, तो आप बहुत ज्यादा पूछ रहे हैं। " - [स्टैक ओवरव्लो एफएक्यू] (http://stackoverflow.com/faq) स्पष्टीकरण के लिए, आपका प्रश्न बहुत व्यापक है। – orourkek

+0

कुछ भी नहीं जो पहले नहीं हुआ है। [Php.net के सत्र प्रलेखन] (http://www.php.net/manual/en/book.session.php) देखें, यह शुरू करने के लिए एक शानदार जगह है:] – orourkek

+0

यह http: // www भी देखें। phpro.org/tutorials/Introduction-To-PHP-Sessions.html –

उत्तर

65

आशा इस मदद करता है :)

सत्र शुरू होता है, यदि आप एक पेज के शीर्ष पर यह कहने की जरूरत है या इससे पहले कि आप सत्र कोड फोन

session_start(); 

ट्रैक करने के लिए सत्र में एक प्रयोक्ता आईडी डाल जो

$_SESSION['user'] = $user_id; 

चेक लॉग होता है अगर किसी को

if (isset($_SESSION['user'])) { 
    // logged in 
} else { 
    // not logged in 
} 
में लॉग ऑन है

खोजें में यूजर आईडी लॉग इन अपने पृष्ठ पर

$_SESSION['user'] 

तो

<?php 
session_start(); 


if (isset($_SESSION['user'])) { 
?> 
    logged in HTML and code here 
<?php 

} else { 
    ?> 
    Not logged in HTML and code here 
    <?php 
} 
+1

अच्छा, सरल, पठनीय कोड। बस सही – IchHabsDrauf

8

सबसे पहले, पीएचपी प्रलेखन sessions पर कुछ excellent information है।

दूसरा, आपको अपनी वेबसाइट के प्रत्येक उपयोगकर्ता (जैसे डेटाबेस) के लिए क्रेडेंशियल स्टोर करने के लिए कुछ तरीका चाहिए। यह एक अच्छा विचार है कि पासवर्ड को मानव-पठनीय, अनएन्क्रिप्टेड सादा पाठ के रूप में संग्रहीत न करें। पासवर्ड संग्रहीत करते समय, आपको PHP के crypt() हैशिंग फ़ंक्शन का उपयोग करना चाहिए। इसका अर्थ यह है कि यदि किसी भी प्रमाण पत्र से समझौता किया गया है, तो पासवर्ड आसानी से उपलब्ध नहीं हैं।

अधिकांश लॉग-इन सिस्टम उपयोगकर्ता द्वारा दर्ज किए गए पासवर्ड को हैश/क्रिप्ट करेंगे, फिर संबंधित उपयोगकर्ता नाम के लिए स्टोरेज सिस्टम (जैसे डेटाबेस) में हैश को परिणाम की तुलना करें। यदि दर्ज पासवर्ड का हैश संग्रहीत हैश से मेल खाता है, तो उपयोगकर्ता ने सही पासवर्ड दर्ज किया है।

आप उपयोगकर्ता की वर्तमान स्थिति के बारे में जानकारी संग्रहीत करने के लिए सत्र चर का उपयोग कर सकते हैं - यानी वे लॉग इन हैं या नहीं, और यदि वे हैं तो आप अपनी अद्वितीय उपयोगकर्ता आईडी या किसी अन्य जानकारी को भी आसानी से उपलब्ध कर सकते हैं।

एक PHP सत्र शुरू करने के लिए, आपको session_start() पर कॉल करने की आवश्यकता है। इसी तरह, एक सत्र और उसके डेटा को नष्ट करने के लिए, आप session_destroy() (उदाहरण के लिए, जब उपयोगकर्ता लॉग आउट) कॉल करने की आवश्यकता:

// Begin the session 
session_start(); 

// Use session variables 
$_SESSION['userid'] = $userid; 

// E.g. find if the user is logged in 
if($_SESSION['userid']) { 
    // Logged in 
} 
else { 
    // Not logged in 
} 

// Destroy the session 
if($log_out) 
    session_destroy(); 

मैं भी सुझाव है कि आप this पर एक नज़र डालें। वहां एक साधारण लॉग-इन सिस्टम बनाने पर कुछ अच्छी, आसान अनुसरण करने वाली जानकारी है।

+0

PHP 5.5 ने [पासवर्ड हैशिंग फ़ंक्शंस] (http://php.net/manual/en/ref.password.php) (5.3.7 संगतता कोड उपलब्ध है) के साथ पासवर्ड हैश पीढ़ी और सत्यापन के लिए उपयोग किया जाना चाहिए। ये कार्य सुरक्षा-कमजोर गलतियों को खत्म करते हैं जो कुछ प्रोग्रामर 'क्रिप्ट()' या अन्य PHP सामान्य हैशिंग फ़ंक्शन का उपयोग करते समय कर सकते हैं। क्रिप्ट() के बजाय password_hash() का उपयोग क्यों करें, इसके विवरण के लिए, [rfc: password_hash] (https://wiki.php.net/rfc/password_hash) –

+0

आपके उत्तर के नीचे वाला लिंक (यह) टूटा हुआ है अभी व। क्या आप इस संसाधन के लिए परमालिंक प्रदान कर सकते हैं? – dmcgill50

4

मैं हमेशा ओओपी करता हूं और सत्र को बनाए रखने के लिए इस कक्षा का उपयोग करता हूं ताकि आप यह सुनिश्चित करने के लिए फ़ंक्शन is_logged_in का उपयोग कर सकें कि उपयोगकर्ता लॉग इन है या नहीं, और यदि आप ऐसा नहीं करते हैं जो आप चाहते हैं।

<?php 
class Session 
{ 
private $logged_in=false; 
public $user_id; 

function __construct() { 
    session_start(); 
    $this->check_login(); 
if($this->logged_in) { 
    // actions to take right away if user is logged in 
} else { 
    // actions to take right away if user is not logged in 
} 
} 

public function is_logged_in() { 
    return $this->logged_in; 
} 

public function login($user) { 
// database should find user based on username/password 
if($user){ 
    $this->user_id = $_SESSION['user_id'] = $user->id; 
    $this->logged_in = true; 
    } 
} 

public function logout() { 
unset($_SESSION['user_id']); 
unset($this->user_id); 
$this->logged_in = false; 
} 

private function check_login() { 
if(isset($_SESSION['user_id'])) { 
    $this->user_id = $_SESSION['user_id']; 
    $this->logged_in = true; 
} else { 
    unset($this->user_id); 
    $this->logged_in = false; 
} 
} 

} 

$session = new Session(); 
?> 
+1

धन्यवाद, यह शुरू करने के लिए एक अच्छी जमीन है, लेकिन ईमेल के साथ उपयोगकर्ता प्रमाणीकरण के लिए अपनी कक्षा का विस्तार करना चाहिए;) –

17

यहां PHP का उपयोग करके सबसे सरल सत्र कोड है। हम 3 फाइलों का उपयोग कर रहे हैं।

login.php

<?php session_start(); ?> // session starts with the help of this function 

<?php 

if(isset($_SESSION['use'])) // Checking whether the session is already there or not if 
           // true then header redirect it to the home page directly 
{ 
    header("Location:home.php"); 
} 

if(isset($_POST['login'])) // it checks whether the user clicked login button or not 
{ 
    $user = $_POST['user']; 
    $pass = $_POST['pass']; 

     if($user == "Ank" && $pass == "1234") // username is set to "Ank" and Password 
     {         // is 1234 by default  

      $_SESSION['use']=$user; 


     echo '<script type="text/javascript"> window.open("home.php","_self");</script>';   // On Successful Login redirects to home.php 

     } 

     else 
     { 
      echo "invalid UserName or Password";   
     } 
} 
?> 
<html> 
<head> 

<title> Login Page </title> 

</head> 

<body> 

<form action="" method="post"> 

    <table width="200" border="0"> 
    <tr> 
    <td> UserName</td> 
    <td> <input type="text" name="user" > </td> 
    </tr> 
    <tr> 
    <td> PassWord </td> 
    <td><input type="password" name="pass"></td> 
    </tr> 
    <tr> 
    <td> <input type="submit" name="login" value="LOGIN"></td> 
    <td></td> 
    </tr> 
</table> 
</form> 

</body> 
</html> 

home.php

<?php session_start(); ?> 

<html> 
    <head> 
     <title> Home </title> 
    </head> 
    <body> 
<?php 
     if(!isset($_SESSION['use'])) // If session is not set then redirect to Login Page 
     { 
      header("Location:Login.php"); 
     } 

      echo $_SESSION['use']; 

      echo "Login Success"; 

      echo "<a href='logout.php'> Logout</a> "; 
?> 
</body> 
</html> 

logout.php

<?php 
session_start(); 

    echo "Logout Successfully "; 
    session_destroy(); // function that Destroys Session 
    header("Location: Login.php"); 
?> 
0
//start use session 

$session_start(); 

extract($_POST);   
//extract data from submit post 

if(isset($submit)) 
{ 

if($user=="user" && $pass=="pass") 

{ 

$_SESSION['user']= $user; 

//if correct password and name store in session 

} 
else { 

echo "Invalid user and password"; 

header("Locatin:form.php"); 

} 

if(isset($_SESSION['user'])) 

{ 

//your home page code here 

exit; 
} 
+0

बीटीडब्ल्यू, आप इस पर पासवर्ड हैश और नमक चाहते हैं। फिर हैश और तुलना के लिए इनपुट नमक। –

0

आप एक पेज के शीर्ष पर सत्र शुरू करने की जरूरत है या आप पहले सत्र कोड फोन

session_start(); 
-2
$session_start(); 

extract($_POST);   
//extract data from submit post 

if(isset($submit)) 
{ 

if($user=="user" && $pass=="pass") 

{ 

$_SESSION['user']= $user; 

//if correct password and name store in session 

} 
else { 

echo "Invalid user and password"; 

header("Locatin:form.php"); 

} 

if(isset($_SESSION['user'])) 

{ 

//your home page code here 

exit; 
} 
संबंधित मुद्दे