त्वरित प्रश्न। वहाँPHP सत्य और 'सत्य' अंतर
$success = true;
और
$success = 'true';
के बीच एक अंतर मैं जानता हूँ कि वे एक दूसरे के लिए नहीं '==
' कर रहे हैं, लेकिन वहाँ उन्हें प्रयोग में एक फर्क है?
संपादित करें: मैंने पाया कि '===' के बजाय '===' का उपयोग करते हुए यह देखते हुए कि $ सफलता सफलतापूर्वक मेरी समस्या हल हो गई है या नहीं। मेरा सवाल यह है कि, क्या मुझे बस नीचे दिए गए मामले में स्ट्रिंग का उपयोग करना चाहिए, और '==' के साथ चिपकना चाहिए?
$User->ProcessLogin();
$loginsuccess = $User->ProcessLogin();
if ($loginsuccess == true) {
echo "<big>Success<big><br />";
echo "<p>We are now redirecting you to the member area.</p>";
echo "<meta http-equiv='refresh' content='=2;MyAccountNEW.php' />";
}
elseif ($loginsuccess == false) {
echo "<span class='sorry'><b>Sorry, your account could not be found.</span></b><div id='shopperlogin'> <img class='shopperlogintext' src='images/shopperlogin.png'>
<br />
<form method='post' action='loginNEW.php' name='loginform' id='loginform'>
<fieldset>
<label for='username'>Username:</label><input type='text' name='username' id='username' /><br />
<label for='password'>Password:</label><input type='password' name='password' id='password' /><br />
<input type='submit' name='login' id='login' value='Login' />
</fieldset>
</form></div>";
}
यहाँ वर्ग का हिस्सा है ..
function ProcessLogin() {
if (!empty($_POST['username']) && !empty($_POST['password'])) {
$username = mysql_real_escape_string($_POST['username']);
$password = md5(mysql_real_escape_string($_POST['password']));
$checklogin = mysql_query("SELECT * FROM users WHERE Username = '".$username."' AND Password = '".$password."'");
if(mysql_num_rows($checklogin) == 1)
{
$row = mysql_fetch_array($checklogin);
$email = $row['EmailAddress'];
$_SESSION['Username'] = $username;
$_SESSION['EmailAddress'] = $email;
$_SESSION['LoggedIn'] = 1;
$this->loggedin = true;
$success = true;
}
else {
$success = false;
}
return $success;
}
}
आप इसे बहुत आसान बना सकते हैं क्योंकि आप केवल रुचि रखते हैं कि लॉगिनस्टैटस सेट है या नहीं, और इससे कोई फर्क नहीं पड़ता कि यह क्या सेट है। Var $ loginsuccess हमेशा डिफ़ॉल्ट रूप से खाली होगा, जब तक कुछ (जो भी) वापस नहीं किया जाता है। तो ProcessLogin() फ़ंक्शन में, बस "सत्य वापस आएं;" $ सफलता चर का उपयोग करने के बजाय। फिर इसके लिए परीक्षण करें: अगर ($ loginsuccess) {// महान, यह काम किया} और {// विफल}।डुप्लिकेट कोड के साथ विफल होने पर उसी फ़ॉर्म को आउटपुट करने के बजाय, मूल फ़ॉर्म का उपयोग करना भी सबसे अच्छा है। फिर जब कुछ बदलने की जरूरत है, तो आपको केवल मूल/एकल रूप को ठीक करना होगा। – Alec