πρόβλημα με login page και redirection

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

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

Απάντηση
chief
Δημοσιεύσεις: 49
Εγγραφή: 14 Οκτ 2008 13:37
Επικοινωνία:

πρόβλημα με login page και redirection

Δημοσίευση από chief » 16 Ιαν 2011 18:33

χαιρετώ!!!
Έχω την παρακάτω login_page.html

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

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http&#58;//www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
		<tr>
			<form name="form1" method="post" action="checklogin.php">
				<td>
					<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
						<tr>
							<td colspan="3"><strong>Member Login </strong></td>
						</tr>
							<tr>
								<td width="78">Username</td>
								<td width="6">&#58;</td>
								<td width="294"><input name="myusername" type="text" id="myusername"></td>
							</tr>
							<tr>
								<td>Password</td>
								<td>&#58;</td>
								<td><input name="mypassword" type="password" id="mypassword"></td>
							</tr>
							<tr>
            				<td width="78">Status</td>
            				<td width="6">&#58;</td>
            				<td>
             					 <select name="status">
               					 <option value="Admin">Admin</option>
              			 		 <option value="Technician">Technician</option>
               					 <option value="AirTrafficController">Air traffic controller</option>
             					 </select>
           					 </td>
							<tr>
								<td>&nbsp;</td>
								<td>&nbsp;</td>
							<td><input type="submit" name="Submit" value="Login"></td>
						</tr>
					</table>
				</td>
			</form>
		</tr>
</table>
</body>
</html>


και το αρχείο php που τσεκάρει τα στοιχεία

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

<?php
ob_start&#40;&#41;;
$host="localhost"; // Host name 
$username=""; // Mysql username 
$password=""; // Mysql password 
$db_name="ergasia2"; // Database name 
$tbl_name="EMPLOYEES"; // Table name
$status="";

// Connect to server and select databse.
mysql_connect&#40;"$host", "$username", "$password", "$status"&#41;or die&#40;"cannot connect"&#41;; 
mysql_select_db&#40;"$db_name"&#41;or die&#40;"cannot select DB"&#41;;

// Define $myusername and $mypassword 
$myusername=$_POST&#91;'Fname'&#93;; 
$mypassword=$_POST&#91;'password'&#93;;
$mystatus=$_POST&#91;'status'&#93;;

// To protect MySQL injection &#40;more detail about MySQL injection&#41;
$myusername = stripslashes&#40;$myusername&#41;;
$mypassword = stripslashes&#40;$mypassword&#41;;
$myusername = mysql_real_escape_string&#40;$myusername&#41;;
$mypassword = mysql_real_escape_string&#40;$mypassword&#41;;

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query&#40;$sql&#41;;

// Mysql_num_row is counting table row
$count=mysql_num_rows&#40;$result&#41;;
// If result matched $myusername and $mypassword, table row must be 1 row

if&#40;$count==1&#41;&#123;
// Register $myusername, $mypassword and redirect to file "login_success.php"
//session_register&#40;"myusername"&#41;;
//session_register&#40;"mypassword"&#41;; 
//header&#40;"location&#58;login_success.php"&#41;;
	if &#40;$status="root"&#41;&#123;
		header&#40;"location&#58;".admin.html&#41;;
		&#125;
	elseif&#40;$status="tech"&#41;&#123;
		header&#40;"location&#58;".tech.html&#41;;
		&#125;
	elseif&#40;$status="contr"&#41;&#123;
		header&#40;"location&#58;".contr.html&#41;;
		&#125;
&#125;
else &#123;
echo "Wrong Username or Password";
&#125;

ob_end_flush&#40;&#41;;
?>
και μάλλον με τα τελευταίο if για να κάνω redirection δεν ξέρω εάν είναι η καλύτερη λύση, με λίγα λόγια κανένας έμπυρος μπορεί να μου πει εάν είναι σωστός ο κώδικας και εάν όχι να μου πει τι να προσέξω.

Ευχαριστώ εκ τον προτέρων.

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

πρόβλημα με login page και redirection

Δημοσίευση από korgr » 16 Ιαν 2011 20:42

Δεν το πολυέψαξα αλλά ξεκίνα με τα κτυπητά λάθη:

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

   if &#40;$status="root"&#41;&#123;
      header&#40;"location&#58;".admin.html&#41;;
      &#125;
   elseif&#40;$status="tech"&#41;&#123;
      header&#40;"location&#58;".tech.html&#41;;
      &#125;
   elseif&#40;$status="contr"&#41;&#123;
      header&#40;"location&#58;".contr.html&#41;;
      &#125;
&#125;


να γινει

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

   if &#40;$status=="root"&#41;&#123;
      header&#40;"location&#58;admin.html"&#41;;
      &#125;
   elseif&#40;$status=="tech"&#41;&#123;
      header&#40;"location&#58;tech.html"&#41;;
      &#125;
   elseif&#40;$status=="contr"&#41;&#123;
      header&#40;"location&#58;contr.html"&#41;;
      &#125;
&#125;
ΥΓ Απορία
Στην $status δεν πρέπει κάπου να της δίνεις τιμή?
Την δημιουργείς από την $_POST κάπου αλλού?

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

πρόβλημα με login page και redirection

Δημοσίευση από Banavas » 16 Ιαν 2011 23:21

Αν και εφόσον παίρνεις την τιμή για την status από την φόρμα στο login_page.html
είναι μεγάλο λάθος γιατί ο κάθε χρήστης μπορεί να συνδεθεί σαν διαχειριστής, αρκεί να το δηλώσει. Το σωστό θα ήταν στον πίνακα με τα στοιχεία των χρηστών να έχεις ένα επιπλέον πεδίο με το status του κάθε χρήστη. Μετά από επιτυχημένη σύνδεση κάποιου χρήστη διαβάζεις το στάτους του από τον πίνακα και τον στέλνεις στην ανάλογη σελίδα.
Happy coding....
Μάρκος
http://lasernet.gr

chief
Δημοσιεύσεις: 49
Εγγραφή: 14 Οκτ 2008 13:37
Επικοινωνία:

πρόβλημα με login page και redirection

Δημοσίευση από chief » 17 Ιαν 2011 17:09

Από ότι καταλάβατε είμαι αρχάριος και απλά προσπαθώ να λύσω μαι άσκηση, στην οποία δεν με νοιάζει εάν είναι τρύπιο από παντού. Απλά να δουλεύει με ενδιαφέρει.

Την τιμή θα την παίρνει από το dropdown μενού της login page.

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

<td width="78">Status</td> 
                        <td width="6">&#58;</td> 
                        <td> 
                             <select name="status"> 
                               <option value="Admin">Admin</option> 
                               <option value="Technician">Technician</option> 
                               <option value="AirTrafficController">Air traffic controller</option> 
                             </select> 
                           </td> 
Banavas εάν κατάλαβα καλά μου λες να φτιάξω μια στήλη στην Mysql και να τοποθετήσω την ιδιότητα του καθενός και σε κάθε login εφόσον την αναγνωρίζει να τον παραπέμπει σε διαφορετικό site. Εάν το κατάλαβα καλά εκτός του ότι θα προσθέσω μια στήλη στην βάση τι άλλο να δοκιμάσω για να γίνει?

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

πρόβλημα με login page και redirection

Δημοσίευση από Banavas » 17 Ιαν 2011 18:16

chief έγραψε: Banavas εάν κατάλαβα καλά μου λες να φτιάξω μια στήλη στην Mysql και να τοποθετήσω την ιδιότητα του καθενός και σε κάθε login εφόσον την αναγνωρίζει να τον παραπέμπει σε διαφορετικό site. Εάν το κατάλαβα καλά εκτός του ότι θα προσθέσω μια στήλη στην βάση τι άλλο να δοκιμάσω για να γίνει?
Αυτό που είπα είναι οτι αντί να δηλώνει ότι status θέλει ο καθένας κατα τo login (οπότε όποιος θέλει μπορεί να συνδέεται σαν διαχειριστής) να του προσδίδεται το status μετά από επιτυχημένο login από τα στοιχεία του χρήστη. Για να γίνει αυτό όπως είπες πρέπει να προσθέσεις ένα πεδίο ακόμη πχ member_status στον πίνακα με τα στοιχεία του χρήστη (EMPLOYEES).
Happy coding....
Μάρκος
http://lasernet.gr

chief
Δημοσιεύσεις: 49
Εγγραφή: 14 Οκτ 2008 13:37
Επικοινωνία:

πρόβλημα με login page και redirection

Δημοσίευση από chief » 17 Ιαν 2011 19:05

ΟΚ πλήρως κατανοητό για την βάση. Το πρόβλημά μου είναι πως θα ενημερώνετε η php. Εκεί έχω φάει το κόλλημα, με λίγα λόγια πως θα το κάνω.

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

πρόβλημα με login page και redirection

Δημοσίευση από Banavas » 17 Ιαν 2011 21:56

Στην αρχή της σελίδας θα βάλεις session_start(); Παρακάτω θα βγάλεις τα slashes στο σημείο session_register("myusername"); session_register("mypassword");
Στη σελίδα που θα γίνεται redirect (θα πρέπει να έχει κατάληξη .php) θα βάλεις πάλι στην κορυφή το session_start(); Μετά από αυτό θα μπορείς να διαβάζεις το username του χρήστη από την session μεταβλητή $username = $_session['myusername']; κάνεις μια αναζήτηση στον πίνακα EMPLOYEES "SELECT * FROM emploees WHERE username='$myusername' " και διαβάζεις την τιμή status για τον συγκεκριμένο χρήστη.

Παρακάτω στην ίδια σελίδα μπορείς να χρησιμοποιήσεις την switch ($status) οπότε ανάλογα με το status του χρήστη να εκτελείται ο ανάλογος κώδικας.
Happy coding....
Μάρκος
http://lasernet.gr

Απάντηση

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

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

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