php Login component

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

php Login component

Δημοσίευση από korgr » 14 Οκτ 2009 20:40

Το αρχειο που περιεχει τις functions ειναι το login_dll.php και πρεπει να το προσθέσετε στις σελιδες σας (ή ακομα καλύτερα σε κάποιο include σας που υπαρχει σε ολες τις σελιδες), αφου συνδεθειτε στην βαση σας, με:

Κώδικας: Επιλογή όλων

require("login_dll.php");
Μετα απο αυτο θα εχετε στη διαθεση σας τις:

doLogin($username, $password, $checkActive, $checkExpire)
Παραμετροι:
  • $_POST['username'] (υποχρεωτικη) το input του χρηστη ως username
    $_POST['password'] (υποχρεωτικη) το input του χρηστη ως password
    $checkActive (true | false) (προαιρετικη) αν θελουμε να ελεγχουμε ενεργους-ανενεργους λογαριασμους χρηστων. Χρειαζομαστε στη βαση ενα πεδιο "active" τυπου 1 | 0.
    $checkExpire (true | false) (προαιρετικη) αν θελουμε να ελεγχουμε λογαριασμους χρηστων που εχουν λήξει χρονικα. Χρειαζομαστε στη βαση ενα πεδιο "expire" τυπου timestamp.
Ειναι η main function που διενεργει την διαδικασια login και επιστρεφει τις ακολουθες τιμες:

[1] = Επιτυχης συνδεση
[2] = Λαθος στοιχεια
[3] = Δεν δωθηκαν username or/and password
[4] = Ο λογαριασμός έχει λήξει
[5] = Ανενεργος λογαριασμός
[6] = Υπάρχει ήδη μέλος επιτυχώς συνδεδεμένο!

Τυπικη χρηση:

Κώδικας: Επιλογή όλων

doLogin($_POST['username'], $_POST['password']);
// ελεγχος μονο για username & password
ή

Κώδικας: Επιλογή όλων

doLogin($_POST['username'], $_POST['password'], true, true);
// ελεγχος για username & password σε συνδυασμό με ελεγχο ενεργου και ισχυοντος χρονικα λογαριασμου
getStatus()
Μας επιστρεφει την τιμη που επεστρεψε η τελευταια προσπαθεια για login. Αν δεν εχει γινει login επιστρεφει κενη τιμη.
Την τιμη αυτη μπορουμε εκτος των αλλων να την εκμεταλευτουμε ως index του array $loginMessages για να εκτυπώνουμε ανάλογα μηνύματα. Τα μηνύματα αυτά μπορούν να τροποποιηθούν στο login_dll.php
Τυπικη χρήση:

Κώδικας: Επιλογή όλων

echo($loginMessages[getStatus()]);
getUserData($user_id)
Παράμετροι:
  • $_SESSION['user_id']
Μας επιστρέφει εναν πινακα με ολα τα στοιχεια του συνδεδεμενου χρηστη αν υπαρχει καποιος συνδεδεμενος εκεινη τη στιγμη.
Ως keys του πίνακα χρησιμοποιειτε τα ονοματα των πεδιων της mysql
Τυπικη χρηση:

Κώδικας: Επιλογή όλων

if($_SESSION['user_id']){ //υπαρχει συνδεδεμενο μελος....
$userData = getUserData($_SESSION['user_id']);
echo&#40;"Συνδεθήκατε επιτυχώς ως <strong>".$userData&#91;'username'&#93;."</strong>"&#41;;


Το password ελεγχεται χωρις md5 κωδικοποιηση. Σε αντιθετη περιπτωση θα πρεπει να τροποποιησετε την doLogin ή να περνάτε ως παραμετρο την md5($_POST['username']).
Τα πεδια στη βαση σας και στη φορμα σας πρεπει να εχουν ως ονοματα τα "username" και "password".
Στο login_dll.php θα πρέπει να ορίσετε την $users_table ωστε να ανταποκρινεται στο ονομα του πινακα των χρηστων σας.
Για αποσυνδεση περνατε με GET την μεταβλητη logout=true ή logout=1 σε οποιαδηποτε σελιδα σας (αρκει να εχει συμπεριληφθει η login_dll.php)

Το αρχειο login_dll.php

Κώδικας: Επιλογή όλων

<?
// πρέπει να έχει προηγηθεί σύνδεση στη βάση δεδομένων...
session_start&#40;&#41;;
if&#40;$_GET&#91;'logout'&#93;&#41;&#123; session_unset&#40;&#41;; &#125;
$loginMessages&#91;1&#93; = "Συνδεθήκατε με επιτυχία στο σύστημα!";
$loginMessages&#91;2&#93; = "Τα στοιχεία αυτά δεν αντιστοιχούν σε εγγεγραμμένο μέλος.";
$loginMessages&#91;3&#93; = "Παρακαλούμε εισάγετε όλα τα στοιχεία σύνδεσης.";
$loginMessages&#91;4&#93; = "Ο λογαριασμός σας έχει λήξει και θα πρέπει να τον ανανεώσετε...<br/>\nΜέχρι τότε θα έχετε πρόσβαση μόνο στην επιλογή «ΑΝΑΝΕΩΣΗ» του profile σας!";
$loginMessages&#91;5&#93; = "Ο λογαριασμός σας δεν έχει ενεργοποιηθεί ακόμα...";
$loginMessages&#91;6&#93; = "Υπάρχει ήδη μέλος επιτυχώς συνδεδεμένο!"; // in case of hacking &#58;p

$users_table = "members"; // Το όνομα του πίνακα των μελών...

function doLogin&#40;$username, $password, $checkActive=false, $checkExpire=false&#41;&#123;
global $users_table;
if&#40;$_SESSION&#91;'loginStatus'&#93;==1&#41;&#123;return 6;&#125; // ήδη loged in
if&#40;!$username || !$password&#41;&#123; $_SESSION&#91;'loginStatus'&#93;=3; return $_SESSION&#91;'loginStatus'&#93;;&#125; // κάτι λείπει
prepareSQLvars&#40;$username, $password&#41;;
$q = "select * from $users_table where username='$username' and password='$password'";
$userResults = mysql_query&#40;$q&#41;;
$usersrow = mysql_fetch_array &#40;$userResults&#41;;
$user_id=$usersrow&#91;id&#93;;
$username=$usersrow&#91;username&#93;;
$password=$usersrow&#91;password&#93;;
$active=$usersrow&#91;active&#93;;
$expire=$usersrow&#91;expire&#93;;
if&#40;$checkActive&#41;&#123;if&#40;!$active && $user_id&#41;&#123; $_SESSION&#91;'loginStatus'&#93;=5; return $_SESSION&#91;'loginStatus'&#93;;&#125;&#125;// Μη ενεργός λογαριασμός
if&#40;$checkExpire&#41;&#123;
$now=@time&#40;&#41;;
if&#40;&#40;$expire < $now&#41; && $user_id&#41;&#123;$_SESSION&#91;'user_id'&#93;=$user_id; $_SESSION&#91;'loginStatus'&#93;=4; return $_SESSION&#91;'loginStatus'&#93;;&#125; // έληξε ο λογαριασμός
&#125;
if&#40;$user_id&#41;&#123;$_SESSION&#91;'user_id'&#93;=$user_id; $_SESSION&#91;'loginStatus'&#93;=1; return $_SESSION&#91;'loginStatus'&#93;;&#125; // επιτυχής σύνδεση
$_SESSION&#91;'loginStatus'&#93;=2;
return $_SESSION&#91;'loginStatus'&#93;; // δεν περνάς κυρά Μαρία &#58;p
&#125;

function getStatus&#40;&#41;&#123;
return $_SESSION&#91;'loginStatus'&#93;;
&#125;

function getUserData&#40;$user_id&#41;&#123;
global $users_table;
$uresult = mysql_query&#40;"SELECT * from $users_table where id='$user_id'"&#41;;
$isResult = mysql_num_rows&#40;$uresult&#41;;
if&#40;!$isResult&#41;&#123;return false;&#125;
$userData = mysql_fetch_array&#40;$uresult&#41;;
return $userData;
&#125;

function prepareSQLvars&#40;&#41;&#123; // protection for mysql injection
	$arguments = func_get_args&#40;&#41;;
	for &#40;$i = 0; $i < func_num_args&#40;&#41;; $i++&#41; &#123;
		global $&#123;$arguments&#91;$i&#93;&#125;;
		if&#40;get_magic_quotes_gpc&#40;&#41;&#41; &#123;
			$&#123;$arguments&#91;$i&#93;&#125; = stripslashes&#40;$&#123;$arguments&#91;$i&#93;&#125;&#41;;
		&#125; 
			$&#123;$arguments&#91;$i&#93;&#125;= mysql_real_escape_string&#40;$&#123;$arguments&#91;$i&#93;&#125;&#41;;
	&#125;
&#125;
?>

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες