freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

Ένα απλό User Login σε PHP


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » PHP Προγραμματισμός και εφαρμογές » PHP τα δικά μας scripts
Moderators:  PHP Moderators, Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 16 [240 Μηνύματα]      Bookmarks Tags: php Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
Σελίδα:  1, 2, 3, ..., 14, 15, 16 Επόμενο
ΑποστολέαςΜήνυμα
billt


Μέλος από: 20 Φεβ 2004
Βοηθήματα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Θεσσαλονίκη
View users profile
ΜήνυμαΣτις: 31 Μαρ 2006 18:20    Θέμα: Ένα απλό User Login σε PHP Απάντηση με παράθεση  Mark this post and the followings unread

Παρακάτω θα σας δείξω ένα απλό (πολύ απλό ...) σύστημα login για κλειστή περιοχή μελών :

Ανοίγουμε το phpmyadmin και δημιουργούμε τη βάση users. Πάμε να φτιάξουμε τον πίνακα που έχει τα usernames και τα passwords των μελών μας, έστω usertable :

κώδικας:
CREATE TABLE `usertable` (
`id` INT NOT NULL AUTO_INCREMENT ,
`username` TEXT NOT NULL ,
`password` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
);


Το αρχείο (dbconnect.php) που μας συνδέει με τη βάση δεδομένων μας περιέχει :

κώδικας:
<?php
mysql_connect("localhost", "root", "")or die("cannot connect");
mysql_select_db("users")?>


Όπου root και "" θα βάλετε το username και password για τη βάση δεδομένων σας.

Εγγραφή register.php :

κώδικας:
<?php
include ('dbconnect.php');
$username=$_POST[username];
$password=md5($_POST[password]);
if($username!='' && $password!='')
{
$sql="INSERT INTO `usertable` ( `id` , `username` , `password` ) VALUES ('', '$username', '$password')";
mysql_query($sql);
echo " Ευχαριστούμε για την εγγραφή σας";
}
else {

?>
<html>
<head>
<title>Register</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

<body>
<form action="register.php" method="post">
<input name="username" type="text" value="username" size="40"><br>
<input name="password" type="password" value="password" size="40"><br>
<input name="submit" type="submit" value="register">
</form>
</body>
</html>
<?php }?>


Όπως βλέπετε το password μπαίνει κρυπτογραφημένο στη βάση με md5

πάμε τώρα στη login.php

κώδικας:
<?php
include ('dbconnect.php');
$username=$_POST[username];
$password=md5($_POST[password]);
if($username!='' && $password!='' && $error!=1)
{
$sql="SELECT * FROM usertable WHERE username='$username' AND password='$password'";
$result=mysql_query($sql);
$rows=mysql_num_rows($result);


   if ($rows==1){
   session_register("authenticated");
   echo "Επιτυχής Login";
   } else {
   echo "Ανεπιτυχές Login, δοκιμάστε πάλι";
   $error=1; }
}
else {

?>

<html>
<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

<body>
<form action="login.php" method="post">
<input name="username" type="text" value="username" size="40"><br>
<input name="password" type="password" value="password" size="40"><br>
<input name="submit" type="submit" value="Login">
</form>
</body>
</html>
<?php }?>


Για να κάνει κανείς logout έχουμε Logout.php

κώδικας:
<?php
session_start();
session_destroy();
echo "Log Out";
?>   


Σε όποια σελίδα θέλετε τώρα να επιτρέψετε είσοδος μόνο σε members βάζετε στην αρχή του κώδικα :

κώδικας:
<?
session_start();
if(!session_is_registered(authenticated)){
header("location:login.php");
}
?>


Για να το κάνετε πιο εξελιγμένο ακόμα μπορείτε να βάλετε cookies για να κρατάνε το username ,να χαιρετάνε τον χρήση και να μη χρειάζεται να κάνει login κάθε φορά, να ζητάτε κατά την εγγραφή το email και να στέλνετε email με link για activation του λογαριασμού και να προσθέσετε και διάφορα επίπεδα access.

Αυτά την επόμενη φορά Αν μου ξέφυγε κάτι sorry, γιατί το έγραψα λίγο στα γρήγορα.

Last edited by billt on 31 Μαρ 2006 18:44, edited 1 time in total
ThyClub
Honorary Member

Μέλος από: 17 Νοε 2003
Βοηθήματα: 8
Νέα: 2
Templates: 3
Scripts: 5
Μηνύματα: 256+

Περιοχή: Hell's Kitchen
View users profile Visit posters website
portfolio facebook twitter deviantART digg del.icio.us 
skype 
ΜήνυμαΣτις: 31 Μαρ 2006 18:29    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

παράθεση:
Όπως βλέπετε το username μπαίνει κρυπτογραφημένο στη βάση με md5


Να διορθώσω οτι το password μπαίνει κρυπτογραφημένο στο παραπάνω παράδειγμα
billt


Μέλος από: 20 Φεβ 2004
Βοηθήματα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Θεσσαλονίκη
View users profile
ΜήνυμαΣτις: 31 Μαρ 2006 18:46    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Thanks,
το άλλαξα ... δεν υπήρχε περίπτωση να μην γράψω κάτι λάθος Καλό ε!

_________________
E-Commerce Services , Official Google Partner , My Interview
Affiliate Management: Urbangreen (SaS), Ladopano (LW) , e-mpomponiera (LW)
Banavas
Script Master

Μέλος από: 21 Νοε 2004
Βοηθήματα: 2
Templates: 1
Scripts: 2
Μηνύματα: 256+


View users profile Send email to user Visit posters website
ΜήνυμαΣτις: 31 Μαρ 2006 23:52    Θέμα: Ένα απλό User Login σε PHP Απάντηση με παράθεση  Mark this post and the followings unread

Συγνώμη αν είναι λίγο άσχετο αλλά θα ήθελα να ρωτήσω αν υπάρχει τρόπος αντιστροφής του md5.
Δηλαδή να διαβάσουμε το καταχωρημένο password αποκωδικοποιόντας την md5 καταχώρηση, ώστε να στείλουμε το password σε κάποιο χρήστη που το ξέχασε.
billt


Μέλος από: 20 Φεβ 2004
Βοηθήματα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Θεσσαλονίκη
View users profile
ΜήνυμαΣτις: 01 Απρ 2006 00:26    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

To md5 δεν είναι μονοσήμαντο. Δηλαδή 2 διαφορετικά passwords μπορούν να έχουν το ίδιο hash. Σπάνιο μεν ... γίνεται όμως.

Στην πράξη επιδιώκεις να βρεις μια λέξη με το ίδιο hash , δεν μπορείς να ξέρεις αν είναι το αρχικό password. H μόνη λύση μέχρι τώρα σε αυτό το θέμα είναι με dictionary μέθοδο. Δηλαδή χρησιμοποιείς όλα τα γράμματα, νούμερα και τα συνδυάζεις μεταξύ τους για ένα λογικό μέγεθος λέξεων.

Για κάθε λέξη που δημιουργείται φτιάχνεις το hash και συγκρίνεις μέχρι να βρεις το σωστό. Αυτό μπορεί να πάρει μερικές μέρες ...

Τώρα για να γυρίσουμε στο θέμα του members section, όταν κάποιος έχασε τον κωδικό του δημιουργείς ένα νέο προσωρινό (το περιορίζεις πχ για μία μέρα) το εισάγεις στη βάση σε md5 και του το στέλνεις ζητώντας του να το αλλάξει με το login.

_________________
E-Commerce Services , Official Google Partner , My Interview
Affiliate Management: Urbangreen (SaS), Ladopano (LW) , e-mpomponiera (LW)
soulatsos


Μέλος από: 25 Οκτ 2005
Μηνύματα: 11

View users profile
ΜήνυμαΣτις: 03 Απρ 2006 15:37    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Πολυ καλο βοηθημα το script σου billt.Επειδη ειμαι σχετικα αρχαριος στην PHP (αλλα οχι και ασχετος ) θα ηθελα τη βοηθεια σας.Δουλευω στο Dreamweaver 8 και το εχω βαλει να κανει το login απο το server behaviors.Ο κωδικας που μου δημιουργει το dreamweaver στην αρχη ειναι ο παρακατω.

παράθεση:
<?php require_once('Connections/conn_pizzadb.php'); ?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['textfield'])) {
$loginUsername=$_POST['textfield'];
$password=$_POST['textfield2'];
$MM_fldUserAuthorization = "";
$MM_redirectLoginSuccess = "afterlogin.php";
$MM_redirectLoginFailed = "loginfail.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_conn_pizzadb, $conn_pizzadb);

$LoginRS__query=sprintf("SELECT username, password FROM users WHERE username='%s' AND password='%s'",
get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));

$LoginRS = mysql_query($LoginRS__query, $conn_pizzadb) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = "";

//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;

if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: " . $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>


Προσπαθησα να συνδυασω το παραδειγμα σου billt με τον κωδικα μου ετσι ωστε να χρησιμοποιησω το session για να δινω προσβαση μονο σε members μου αλλα δεν το καταφερα.Θα μπορουσε καποιος να μου πει τις αντιστοιχιες των συναρτησεων και τι πρεπει να γραψω σε καθε σελιδα που θελω να ειναι προσβασιμη μονο σε μελη?

Στην ουσια θελω να κανω το αντιστοιχο με αυτο που εγραψε ο billt.
παράθεση:

Σε όποια σελίδα θέλετε τώρα να επιτρέψετε είσοδος μόνο σε members βάζετε στην αρχή του κώδικα :


κώδικας:
<?
session_start();
if(!session_is_registered(authenticated)){
header("location:login.php");
}
?>


Οποιος μπορει να βοηθησει...γιατι ειναι για ενα project στη σχολη μου και εχω φρικαρει

Ευχαριστω πολυ...
billt


Μέλος από: 20 Φεβ 2004
Βοηθήματα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Θεσσαλονίκη
View users profile
ΜήνυμαΣτις: 03 Απρ 2006 15:54    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Δοκίμασε λίγο αυτό :

κώδικας:
<?
session_start();
if(!isset($_SESSION['MM_Username'])){
header("location:login.php");
}
?>

_________________
E-Commerce Services , Official Google Partner , My Interview
Affiliate Management: Urbangreen (SaS), Ladopano (LW) , e-mpomponiera (LW)
mpalarinas


Μέλος από: 28 Οκτ 2005
Μηνύματα: 126
Περιοχή: Θεσσαλονίκη
View users profile Visit posters website
ΜήνυμαΣτις: 15 Απρ 2006 22:10    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Καλησπέρα σας,
αν ένας χρήστης πληκτρολογήσει τα στοιχεία του(username και password) θέλω να μεταφέρετε στο account του όπως και στο freestuff αφού πρώτα γίνει έλεγχος των στοιχείων του.

Μπορείτε να μου πείτε πως γίνεται;

_________________
Basilakis
PHP Moderator

Μέλος από: 17 Νοε 2003
Βοηθήματα: 68
Νέα: 7
Templates: 3
Scripts: 3
Μηνύματα: 256+

Περιοχή: Womans' Brain
View users profile Send email to user Visit posters website
blog deviantART flickr myspace facebook linkedin 
hi5 sync twitter deviantART skype 
ΜήνυμαΣτις: 15 Απρ 2006 22:39    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Θα βάλεις όταν κάνει symbit την φόρμα να πηγαίνει σε μία σελίδα px members.php που θα κάνει query με το username του και θα κάνει prin τα στοιχεάι του. Σαφώς σε εκείνη την σελίδα να κάνεις έλεγχο εάν έχει γίνει login!

_________________
Κατασκευη Ιστοσελιδων
mpalarinas


Μέλος από: 28 Οκτ 2005
Μηνύματα: 126
Περιοχή: Θεσσαλονίκη
View users profile Visit posters website
ΜήνυμαΣτις: 15 Απρ 2006 22:41    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Τη ξέρω την διαδικασία αλλά τον κώδικα δεν ξέρω. Αν μπορεί κάποιος να μου δώσει κώδικα

_________________
billt


Μέλος από: 20 Φεβ 2004
Βοηθήματα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Θεσσαλονίκη
View users profile
ΜήνυμαΣτις: 16 Απρ 2006 00:04    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Στη login.php θα κάνεις μια προσθήκη :

κώδικας:
$sql="SELECT * FROM usertable WHERE username='$username' AND password='$password'";
$result=mysql_query($sql);
$rows=mysql_num_rows($result);


   if ($rows==1){
   session_register("authenticated");
  $_SESSION['username'] = $username;
  echo "Επιτυχής Login";
   } else {
   echo "Ανεπιτυχές Login, δοκιμάστε πάλι";
   $error=1; }
}


Στη σελίδα members.php που θέλεις να κατευθύνεις το χρήστη θα καλέσεις τη μεταβλητή $username με το

κώδικας:
<?
session_start();
if(!session_is_registered(authenticated)){
header("location:login.php");
}
 $username=$_SESSION['username'];
?>


και θα τη βάλεις σε ένα query για να πάρεις τα σχετικά με τον συγκεκριμένο χρήστη.

_________________
E-Commerce Services , Official Google Partner , My Interview
Affiliate Management: Urbangreen (SaS), Ladopano (LW) , e-mpomponiera (LW)
difylos


Μέλος από: 17 Ιουλ 2004
Μηνύματα: 27
Περιοχή: Ηράκλειο
View users profile Visit posters website
ΜήνυμαΣτις: 26 Απρ 2006 17:09    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Αν έχει ξεκινήσει ήδη ένα άλλο session τι μπορεί να κάνεις ;
ALKIVIADES
Honorary Member

Μέλος από: 07 Απρ 2005
Νέα: 71
Μηνύματα: 256+


View users profile
ΜήνυμαΣτις: 05 Ιουν 2006 12:58    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Πως θα μπορούσαμε να αποτρέψουμε έναν δεύτερο χρήστη να επιλέξει να εγγραφεί με ένα είδη υπάρχων username , βάση του παραπάνω script ?
Δήλ. αν υπάρχει το username π.χ "Petros" τότε άν κάποιος προσπαθήσει να εγγραφεί με το ίδιο να μην είναι δυνατόν και έτσι να του δίδεται η επιλογή να δοκιμάσει να εγγραφεί με κάποιο διαφορετικό username που δεν έχει επιλεγεί είδη απο κάποιον άλλον .
περιμένω κάποιο σχετικό παράδειγμα αν είναι δυνατόν ..
billt


Μέλος από: 20 Φεβ 2004
Βοηθήματα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Θεσσαλονίκη
View users profile
ΜήνυμαΣτις: 05 Ιουν 2006 13:33    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Στο register.php και πάνω από την INSERT μπορείς να ελέγξεις αν ήδη υπάρχει χρήστης με το ίδιο username στη βάση :

κώδικας:

$username=$_POST[username];
$password=md5($_POST[password]);

......

$sqlcheck="SELECT * FROM usertable WHERE username='$username' ";
$resultcheck=mysql_query($sqlcheck);
$rowscheck=mysql_num_rows($resultcheck); ........

if($username!='' && $password!='' && $rowscheck==0)
{
$sql="INSERT INTO `usertable` ( `id` , `username` , `password` ) VALUES ('', '$username', '$password')";

............



_________________
E-Commerce Services , Official Google Partner , My Interview
Affiliate Management: Urbangreen (SaS), Ladopano (LW) , e-mpomponiera (LW)
ALKIVIADES
Honorary Member

Μέλος από: 07 Απρ 2005
Νέα: 71
Μηνύματα: 256+


View users profile
ΜήνυμαΣτις: 05 Ιουν 2006 13:45    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

ευχαριστώ για την γρήγορη απάντηση
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 16 [240 Μηνύματα] Σελίδα:  1, 2, 3, ..., 14, 15, 16 Επόμενο
Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » PHP Προγραμματισμός και εφαρμογές » PHP τα δικά μας scripts
Τώρα είναι 08 Δεκ 2016 16:16 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos