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
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 7 από 16 [240 Μηνύματα]      Bookmarks Tags: php Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
Σελίδα:  Προηγούμενο  1, 2, 3, 4, 5, 6, 7, 8, 9, ..., 14, 15, 16 Επόμενο
ΑποστολέαςΜήνυμα
boliziner


Μέλος από: 07 Αυγ 2008
Μηνύματα: 18

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

Αυτός ο έλεγχος μπορεί να γίνει με to session που έχεις ανοιχτό όταν κάνεις log in.

Το script αυτό δεν είναι ασφαλές και κινδυνεύεις με sql injection πρέπει να προσθέσεις κώδικα.

http://en.wikibooks.org/wiki/Programming:PHP:SQL_Injection
billt


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

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

Το script από "απλό user login ..." αρχίζει να μεγαλώνει

Τα sql injections έχουν συζητηθεί πολλές φορές στο forum και δεν είναι στο σκοπό του βοηθήματος, αλλά περισσότερο η εξοικίωση με τη χρήση των sessions. Αnyway χωρίς να επεκταθώ ιδιαίτερα πέρασε όλες τις μεταβλητές POST ή SESSION από τη συνάρτηση mysql_real_escape_string ($value) που υπάρχει από την PHP5.

antoo ανέφερε:
Πολύ καλό το βοήθημά σου bilt. Θα ήθελα να σε ρωτήσω κάτι. Έχω κάνει register, login και θέλω να τελειώσω με το logout. Πάνω δεξιά στη σελίδα έχω βάλει να εμφανίζεται αποσύνδεση και δίπλα το όνομα του συνδεδεμένου. Θέλω όμως αυτό να εμφανίζεται σε όλες τις σελίδες μέχρι να γίνει αποσύνδεση. Ποιος είναι περίπου αυτός ο έλεγχος ;


Αν έχεις σε όλες τις σελίδες στην κορυφή του κώδικα
κώδικας:
<?php session_start(); ?>

μπορείς να χρησιμοποιήσεις τις μεταβλητες SESSION με το username. Για την αποσύνδεση απλά κάνε λινκ στο logout.php

παράθεση:
Και επίσης σίγουρα όταν έχει γίνει login, δε θα πρέπει να μπορείς πλέον να κάνεις login. Ξέρεις περίπου πώς μπορώ να τα διορθώσω αυτά; Ευχαριστώ εκ των προτέρων για το χρόνο σου.


Μπορείς στην κορυφή της login.php να βάλεις
κώδικας:
<?
session_start();
if(session_is_registered(authenticated)){
header("location:index.php");
}
?>


που θα στέλνει το χρήστη στην index.php αν έχει κάνει ήδη Login.
bicco


Μέλος από: 10 Δεκ 2008
Μηνύματα: 4

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

Ευχαριστώ πολύ για τον οδηγό!

Μπορείς να μου εξηγήσεις λίγο πιο αναλυτικά τι κάνει η παρακάτω γραμμή και τι ακριβώς λέει στον υπολογιστή?

κώδικας:
session_register("authenticated");


Γιατί ας πούμε δε χρησιμοποιήσαμε μια απλή μεταβλητή για αυτή τη δουλειά?
Τι ακριβώς κάνει αυτό το session_register??
korgr
Honorary Member

Μέλος από: 07 Οκτ 2008
Βοηθήματα: 5
Scripts: 2
Μηνύματα: 256+

Περιοχή: Corinth
View users profile
portfolio skype 
ΜήνυμαΣτις: 10 Δεκ 2008 11:02    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Αν χρησιμοποιήσεις απλή μεταβλητή, αυτή θα είναι διαθέσιμη μόνο κατά την εκτέλεση του php κώδικα της συγκεκριμένης σελίδας.
Με την session variable θα είναι διαθέσιμη η τιμή της και σε όλες τις υπόλοιπες σελίδες του site μετά το login (σαν να λέμε μεταφέρεται η μεταβλητή από σελίδα σε σελίδα).

_________________
Projects: www.topgr.gr | www.ktizo.gr | Odyssey CMS | Οικονομική διαχείριση εσόδων-εξόδων
bicco


Μέλος από: 10 Δεκ 2008
Μηνύματα: 4

View users profile
ΜήνυμαΣτις: 10 Δεκ 2008 13:40    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Δηλαδή εννοείς ότι η "session_register" είναι session variable?

Όσο για τις λέξεις register και authenticated, είναι τυχαίες ή πρόκειται για συγκεκριμένα statements για αυτή τη δουλειά??

Επιπλέον, ενώ ακολούθησα όλες τις οδηγίες τούτου του οδηγού, παρόλα αυτά, τη σελίδα που θέλω να "προστατέψω", δε την καταφέρνω και πάντα μα πάντα μου διαβάζεται το περιεχόμενο της, παρόλο που έχω βάλει στην αρχή το PHP..!!


καμια ιδέα?
korgr
Honorary Member

Μέλος από: 07 Οκτ 2008
Βοηθήματα: 5
Scripts: 2
Μηνύματα: 256+

Περιοχή: Corinth
View users profile
portfolio skype 
ΜήνυμαΣτις: 16 Δεκ 2008 19:04    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Η session_register είναι statement της php και ορίζει μια session variable (αυτή που έιναι ως όρισμα μέσα στις παρενθέσεις).
Ένας άλλος τρόπος να ορίσεις μια session μεταβλητή είναι για παράδειγμα μετά από συμπλήρωση login φόρμας:
κώδικας:

session_start();
$username=$_POST["username"];
$password=$_POST["password"];
// check username & password και αν ισχύουν {
$_SESSION["username"]=$username; // κράτα το username σε session var για να την χρησιμοποιείς σε μηνύματα προς τον registered user...
$_SESSION["authenticated"]=true;
}else{
$_SESSION["username"]="";
$_SESSION["authenticated"]=false;
}

_________________
Projects: www.topgr.gr | www.ktizo.gr | Odyssey CMS | Οικονομική διαχείριση εσόδων-εξόδων
PaXaRoTi


Μέλος από: 04 Σεπ 2008
Μηνύματα: 9

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

Egine to register alla !

Graftika 2 fores me to idio name kai pass pos ginete auto ?

Kai den ginete na gino login ... enw iparxoune ta stixia den ginete login.
billt


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

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

Ama den kaneis elegxo an iparxei to username .... ginetai

To password einai md5?

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


Μέλος από: 19 Απρ 2009
Μηνύματα: 1

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

χρησιμοποιοώ το web page maker και θέλω να δημιουργήσω forum όπως αυτό.. είμαι τέλείως άσχετος. δεν χρησιμοποιώ το adobe link to adobe dreamweaver 8 cs4 επειδή δεν κάθεται στον υπολογιστή μου. καμιά βοήθεια για το forum???
mariosal
Honorary Member

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


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

Θα πείραζε να φτιάξω μία "πιο γρήγορη" έκδοση, να κάνω validate τα αρχεία και να την postάρω;
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 
ΜήνυμαΣτις: 09 Ιουν 2009 13:03    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Καθόλου.
mariosal
Honorary Member

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


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

Κάθισα και έφτιαξα μία γρηγορότερη και πιο απλή έκδοση του ήδη υπάρχον script. Κάνει την ίδια ακριβώς δουλειά και πιστεύω ότι τώρα είναι πιο εύκολο έτσι όπως το έκανα. Δεν το έχω testάρει άλλα πρέπει να δουλεύει σωστά.

Εκτελούμε το ακόλουθο SQL query σε μία MySQL βάση δεδομένων

κώδικας:
CREATE TABLE table_name (
id int UNSIGNED AUTO_INCREMENT,
username TEXT NOT NULL,
password TEXT NOT NULL,
PRIMARY KEY ( id )
);


Έπειτα φτιάχνουμε ένα .php αρχείο στο οποίο θα βάλουμε τον ακόλουθο κώδικα για την εγγραφή

κώδικας:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Register</title>
</head>

<body>
<?php
session_start();
if (session_is_registered('authenticated'))
   die('Έχετε εγγραφεί ήδη</body></html>');
mysql_connect('localhost', 'databe_username', 'database_userpassword')or die(mysql_error());
mysql_select_db('database_name') or die(mysql_error());
if (!empty($_POST['username']) && !empty(md5($_POST['password']))) {
   mysql_query("INSERT INTO table_name (username, password) VALUES ('".mysql_real_escape_string(htmlspecialchars($_POST['username']))."', '".mysql_real_escape_string((md5($_POST['password']))."')");
   die('Ευχαριστούμε για την εγγραφή σας</body></html>');
}
?>
<form action="<?=($_SERVER['PHP_SELF']);?>" method="post">
Username: <input name="username" type="text" size="40" />
<br>
Password: <input name="password" type="password" size="40" />
<br>
<input name="submit" type="submit" value="register" />
</form>
</body>
</html>


Έπειτα φτιάχνουμε ένα .php αρχείο στο οποίο θα βάλουμε τον ακόλουθο κώδικα για την είσοδο

κώδικας:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>

<body>
<?php
if (session_is_registered('authenticated'))
   die('Έχετε συνδεθεί ήδη ήδη</body></html>');
mysql_connect('localhost', 'databe_username', 'database_userpassword')or die(mysql_error());
mysql_select_db('database_name') or die(mysql_error());
if (!empty($_POST['username']) && !empty(md5($_POST['password']))) {
   $rows = mysql_num_rows(mysql_query("SELECT username, password FROM table_name WHERE username='".mysql_real_escape_string($_POST['username'])."' AND password='".mysql_real_escape_string(md5($_POST['password']))."'"));
   if ($rows==1) {
      session_register('authenticated');
      die('Επιτυχής Login</body></html>');
   }
   else
      echo('Ανεπιτυχές Login, δοκιμάστε πάλι');
}
?>
<form action="<?=($_SERVER['PHP_SELF']);?>" method="post">
Username: <input name="username" type="text" size="40" />
<br>
Password: <input name="password" type="password" size="40" />
<br>
<input name="submit" type="submit" value="Login" />
</form>
</body>
</html>


Για να κάνει κάποιος logout φτιάχνουμε ένα αρχείο .php και βάζουμε τον ακόλουθο κώδικα

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


Εάν θέλετε να επιτρέπετε είσοδο σε μία σελίδα μόνο για όσους έχουν πραγματοποιήσει είσοδο γράφουμε τον ακόλουθο κώδικα

κώδικας:
<?php
session_start();
if (!session_is_registered('authenticated'))
   header('Location: name_of_file_which_users_login.php');
?>

Last edited by mariosal on 09 Ιουν 2009 13:49, edited 8 times 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 
ΜήνυμαΣτις: 09 Ιουν 2009 13:29    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

1 παρατήρηση:

Ποτέ μα ΠΟΤΕ μην εμπιστεύεστε το user input.

Δλδ ποτέ μην κάνετε αυτό:

κώδικας:
if (!empty($_POST['username']) && !empty(md5($_POST['password']))) {
   mysql_query("INSERT INTO table_name (username, password) VALUES ('".$_POST['username']."', '".md5($_POST['password'])."')");
mariosal
Honorary Member

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


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

Έχεις δίκιο κάτσε να κάνω μία αλλαγή
mariosal
Honorary Member

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


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

Τώρα καλύτερα;
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 7 από 16 [240 Μηνύματα] Σελίδα:  Προηγούμενο  1, 2, 3, 4, 5, 6, 7, 8, 9, ..., 14, 15, 16 Επόμενο
Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » PHP Προγραμματισμός και εφαρμογές » PHP τα δικά μας scripts
Τώρα είναι 07 Δεκ 2016 10:37 | 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