2013-06-03 12 views
6

मेरे सत्र को चलाने और चलाने में परेशानी हो रही है। मैं पिछले कुछ घंटों के लिए अपना कोड देख रहा हूं और मैं यह नहीं देख पा रहा हूं कि इसमें क्या गलत है। जिस समस्या का मैं अनुभव कर रहा हूं वह यह है कि हर बार जब मैं उपयोगकर्ता नाम और पासवर्ड टाइप करता हूं, तो यह मुझे फिर से लॉगिन पेज पर रीडायरेक्ट करता है जब इसे सुरक्षित पेज.पीपी प्रदर्शित किया जाना चाहिए ..सरल लॉगिन सत्र php

मेरा कोड यहां है :

loginproc.php पेज - यह पृष्ठ के माध्यम से अगर बयान कदम और बाकी

<?php 

// Inialize session 
session_start(); 

// Include database connection settings 
include('../../model/database.php'); 

// Retrieve username and password from database according to user's input 
$login = mysql_query("SELECT * FROM user WHERE (username = '" . mysql_real_escape_string($_POST['username']) . "') and (password = '" . mysql_real_escape_string($_POST['password']) . "')"); 

// Check username and password match 
if (mysql_num_rows($login) == 1) { 
// Set username session variable 
$_SESSION['username'] = $_POST['username']; 
// Jump to secured page 
header('Location: securedpage.php'); 
} 
else { 
// Jump to login page 
header('Location: index.php'); 
} 

?> 

securedpage.php पेज

के लिए सीधे चला जाता है 210
<?php 

// Inialize session 
session_start(); 

// Check, if username session is NOT set then this page will jump to login page 
if (!isset($_SESSION['username'])) { 
header('Location: index.php'); 
} 

?> 
<html> 

<head> 
<title>Secured Page</title> 
</head> 

<body> 

<p>This is secured page with session: <b><?php echo $_SESSION['username']; ?></b> 
<br>You can put your restricted information here.</p> 
<p><a href="logout.php">Logout</a></p> 

</body> 

</html> 

database.php पेज

<?php 
$dsn = 'mysql:host=localhost;dbname=sports_db'; 
$username = ''; 
$password = ''; 
$options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); 

try { 
    $db = new PDO($dsn, $username, $password, $options); 
} catch (PDOException $e) { 
    $error_message = $e->getMessage(); 
    include 'errors/db_error_connect.php'; 
    exit; 
} 

function display_db_error($error_message) { 
    global $app_path; 
    include 'errors/db_error.php'; 
    exit; 
} 
?> 
+1

अपने कोड बदलने का प्रयास करें कर रहे हैं पुष्टि करते हैं कि चाहे रिकॉर्ड 'DB' या से प्राप्त करने में कठिनाई है उपयोगकर्ता नाम और पासवर्ड के लिए नहीं –

+0

क्या आप '$ login' के लिए var_dump कर सकते हैं? – Cjueden

+0

तो 'mysql_num_rows ($ login)' वापसी क्या मूल्य है? –

उत्तर

8

आप पीडीओ और mysql मिश्रण नहीं कर सकते .. आप PDO में क्वेरी बनाने और mysql_* का उपयोग करने के

<?php 

// Inialize session 
session_start(); 

// Include database connection settings 
include('../../model/database.php'); 

// Retrieve username and password from database according to user's input 
$stmt = $db->prepare("SELECT * FROM user WHERE (`username` = :username) and (`password` = :password)"); 

$result = $stmt->execute(array(':username'=>$_POST['username'],':password'=>$_POST['password'])); 
$num_rows = $stmt->rowCount(); 
// Check username and password match 
if ($num_rows > 0) { 
// Set username session variable 
$_SESSION['username'] = $_POST['username']; 
// Jump to secured page 
header('Location: securedpage.php'); 
} 
else { 
// Jump to login page 
header('Location: index.php'); 
} 

?> 

देख reference

+0

सही! धन्यवाद, मैं पूरी तरह से समझता हूं कि मैं पीडीओ और mysql_ * – user2446521

+0

@ user2446521 किसी भी कारण से धन्यवाद नहीं कर सकता .. आपकी मदद करने में खुशी हुई :) – alwaysLearn

0

समस्या शायद यहाँ निहित है:

if (mysql_num_rows($login) == 1) {

उपयोग ट्रिपल समीकरण आप पूर्णांक के लिए जाँच करना चाहते हैं 1. सबसे अधिक संभावना है, हालांकि, है कि लॉगिन/पास विफल रहता है।

और यह:

$_SESSION['username'] = $_POST['username'];

बुरा व्यवहार है, भले ही आप एक वैध प्रतिक्रिया मिलता है।

1) अपने सत्र चर में सीधे उपयोगकर्ता दिए गए डेटा की दुकान मत करो:

+1

क्यों और क्यों ??? – gkalpak

+0

यह सुनिश्चित नहीं है कि आप मुझे क्या करना चाहते हैं – user2446521

+0

ठीक है, जैसा कि आप ऊपर लिखते हैं, आपको mysql_num_rows ($ login) == 0 मिलता है, जिसका अर्थ है लॉगिन/पास विफल रहता है। – Sven

0

मैं तुम्हारे लिए एक सुझाव है।

2) सबसे पहले यह जांचने के लिए जांचें कि क्या उपयोगकर्ता प्रमाण पत्र आपकी तालिका में मौजूद है, संबंधित पंक्ति प्राप्त करें और फिर अपने सत्र चर में प्राप्त डेटा संग्रहीत करें।

संबंधित मुद्दे