Επιλογή χρηστών βάσει κάποιου στοιχείου

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

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

Απάντηση
netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

Επιλογή χρηστών βάσει κάποιου στοιχείου

Δημοσίευση από netpumber » 01 Δεκ 2010 00:29

Καλημέρα σας!

Λοιπόν κοιτάξτε αυτόν τον κώδικα λίγο.

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

	//User Data From Form
	
	$usr  = mysql_real_escape_string($_POST['username']);
	$pass = md5($_POST['password']);
	
	//Fetching the perm of the User	
	
	$query =  "SELECT perm FROM users WHERE username='$usr' AND password='$pass'";
	$selected_perm = mysql_query($query);
	$row = mysql_fetch_array($selected_perm); 
	$perm = $row['perm']; //User's Permmision No.
	
	//Fetching the tmima_id of the User
	
	$query =  "SELECT tmima_id FROM users WHERE username='$usr' AND password='$pass'";
	$selected_tmima_id = mysql_query($query);
	$row = mysql_fetch_array($selected_tmima_id); 
	$tmima_id = $row['tmima_id']; //User's tmima_id.
	
	//Checking If UserName AND PASSWORD are Correct.
	
	$query =  "SELECT id FROM users WHERE username='$usr' AND password='$pass' ORDER BY id";
	$select_user = mysql_query($query);
	
	//An o xristis einai admin kai exei valei swsta ta stoixeia ton kanei redirect sto admin panel.
	//Dimiourgei to session tou authorized.
		
	if (mysql_num_rows($selected_user) == 0 && $perm == 1) 
	{
		session_start();
		session_register('authorized');
		$_SESSION['authorized'] = true;

		header("Location: admin/admin.php");
		exit;
		echo $perm;
	} 
	else if(mysql_num_rows($selected_user) == 0 && $perm == 0)
	{ 
	
		session_start();
		session_register('authorized');
		$_SESSION['authorized'] = true;
		$_SESSION["tmima_id"] = $tmima_id;
		header("Location: main.php");
		exit;
		
	}else{
		echo '<script language="javascript" type="text/javascript">
		alert&#40;\'Πληκτρολογήσατε λάθος το όνομα χρήστη ή τον κωδικό. \nΠαρακαλώ ξαναπροσπαθήστε\'&#41;;
		</script>';
	 
		echo "<script language='JavaScript'> window.location='index.php'; </script>";         

		exit;    
	&#125;
Η λογική είναι η εξής.
Οι χρήστες που είναι διαχειριστές έχουν σαν perm στη βάση δεδομένων τον αριθμό 1.
Οι χρήστες που δεν είναι διαχειριστές έχουν το 0.

Αυτό που θέλω να κάνει είναι να βλέπει αν έχει βάλει ο χρήστης σωστά τα στοιχεία του και αν το perm είναι 1 να τον πετάει στο admin.php ενώ αν έχει βάλει σωστά τα στοιχεία του και το perm είναι 0 να τον πετάει στο main.php.

Το πρώτο σκέλος δουλεύει μια χαρά . Το δεύτερο μας τα χαλάει. Παρατήρησα πως όποιον χρήστη και αν βάλω , ακόμα και έναν που δεν είναι στη βάση δεδομένων θα τον πετάξει στο main.php . Πιθανότατα κάτι γίνεται με τον έλεγχο των στοιχείων..

Μπορείτε να με βοηθήσετε ;

Ευχαριστώ πολύ!

heisenberg
Δημοσιεύσεις: 88
Εγγραφή: 28 Αύγ 2009 15:15

Επιλογή χρηστών βάσει κάποιου στοιχείου

Δημοσίευση από heisenberg » 01 Δεκ 2010 01:00

ένα λάθος είναι εδώ:

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

if &#40;mysql_num_rows&#40;$selected_user&#41; == 0 && $perm == 1&#41; 
του λες "αν ο αριθμός των γραμμών που επέστρεψε είναι μηδέν"
ενώ θέλεις να τρέξει αν δεν είναι μηδεν (δηλαδή επέστρεψε τουλάχιστον έναν).

έτσι όπως το βλέπω γρήγορα, μαλλον λόγω αυτού τρέχει τελικά το σκέτο else και τους πάει όλους στο index (αν κι εσύ λες στο main)

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

heisenberg
Δημοσιεύσεις: 88
Εγγραφή: 28 Αύγ 2009 15:15

Επιλογή χρηστών βάσει κάποιου στοιχείου

Δημοσίευση από heisenberg » 01 Δεκ 2010 01:10

επίσης γενικά ο κώδικας σου θέλει λίγο συμμάζεμα.

Δηλαδή δεν χρειάζεται να κάνεις 3 φορές query. Φτάνει μια.

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

   $query =  "SELECT id, tmima_id, perm FROM users WHERE username='$usr' AND password='$pass'";
   $selected = mysql_query&#40;$query&#41;;
   $row = mysql_fetch_array&#40;$selected&#41;;
   $perm = $row&#91;'perm'&#93;; //User's Permmision No.
   $tmima_id = $row&#91;'tmima_id'&#93;; //User's tmima_id.
   $id = $row&#91;'id'&#93;; //User's tmima_id.
 

το id σε αυτόν τον κώδικα δεν φαίνεται να το χρησιμοποιέις. Αν δεν το χρειάζεσαι σβήστο.

Το ORDER BY που είχες δεν χρειάζόταν. γιατί αν είχες περισσοτερες από μια εγγραφές, θα είχες πρόβλημα. Προφανώς δε θέλειw περισσοτερες από μια εγγραφες (users) που να έχουν το ίδιο username και password.
Όταν εγγραφεται ο χρήστης να μην τον εγγραφεςι αν έχει επιλέξει username που υπάρχει ήδη.
Δεν υπάρχει καλύτερο πράγμα από το να έχεις γυναίκα δικηγόρο ...

netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

Επιλογή χρηστών βάσει κάποιου στοιχείου

Δημοσίευση από netpumber » 01 Δεκ 2010 13:48

Και έτσι που το έκανα δεν δουλεύει..Τώρα σε πετάει στην else


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

	//Checking If UserName AND PASSWORD are Correct.
	
	$query =  "SELECT * FROM users WHERE username='$usr' AND password='$pass'";
	$select_user = mysql_query&#40;$query&#41;;
	
	//An o xristis einai admin kai exei valei swsta ta stoixeia ton kanei redirect sto admin panel.
	//Dimiourgei to session tou authorized.
		
	if &#40;mysql_num_rows&#40;$selected_user&#41; != 0 && $perm == 1&#41; 
	&#123;
		session_start&#40;&#41;;
		session_register&#40;'authorized'&#41;;
		$_SESSION&#91;'authorized'&#93; = true;

		header&#40;"Location&#58; admin/admin.php"&#41;;
		exit;
		echo $perm;
	&#125; 
	else if&#40;mysql_num_rows&#40;$selected_user&#41; != 0 && $perm == 0&#41;
	&#123; 
	
		session_start&#40;&#41;;
		session_register&#40;'authorized'&#41;;
		$_SESSION&#91;'authorized'&#93; = true;
		$_SESSION&#91;"tmima_id"&#93; = $tmima_id;
		header&#40;"Location&#58; main.php"&#41;;
		exit;
		
	&#125;else&#123;
		echo '<script language="javascript" type="text/javascript">
		alert&#40;\'Πληκτρολογήσατε λάθος το όνομα χρήστη ή τον κωδικό. \nΠαρακαλώ ξαναπροσπαθήστε\'&#41;;
		</script>';
	 
		echo "<script language='JavaScript'> window.location='index.php'; </script>";         

		exit;    
	&#125;

heisenberg
Δημοσιεύσεις: 88
Εγγραφή: 28 Αύγ 2009 15:15

Επιλογή χρηστών βάσει κάποιου στοιχείου

Δημοσίευση από heisenberg » 01 Δεκ 2010 13:51

δοκίμασε να βάλει στο $perm == 1 και στο $perm == 0
το 1 και το 0 σε αυτάκια
Δεν υπάρχει καλύτερο πράγμα από το να έχεις γυναίκα δικηγόρο ...

heisenberg
Δημοσιεύσεις: 88
Εγγραφή: 28 Αύγ 2009 15:15

Επιλογή χρηστών βάσει κάποιου στοιχείου

Δημοσίευση από heisenberg » 01 Δεκ 2010 13:52

επίσης
ξεχασες να γράψεις το

$perm = $row['perm'];
$tmima_id = $row['tmima_id'];
Δεν υπάρχει καλύτερο πράγμα από το να έχεις γυναίκα δικηγόρο ...

netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

Επιλογή χρηστών βάσει κάποιου στοιχείου

Δημοσίευση από netpumber » 01 Δεκ 2010 17:45

Μπα... τζίφος. Και δεν μπορώ να καταλάβω γιατί δεν δουλεύει..

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

 $query =  "SELECT id, tmima_id, perm FROM users WHERE username='$usr' AND password='$pass'";
   $selected = mysql_query&#40;$query&#41; 
   $row = mysql_fetch_array&#40;$selected&#41; 
   $perm = $row&#91;'perm'&#93;; //User's Permmision No.
   $tmima_id = $row&#91;'tmima_id'&#93;; //User's tmima_id.
   $id = $row&#91;'id'&#93;; //User's id. 
	
	//An o xristis einai admin kai exei valei swsta ta stoixeia ton kanei redirect sto admin panel.
	//Dimiourgei to session tou authorized.
		
	if &#40;mysql_num_rows&#40;$selected_user&#41; != 0 && $perm == 1&#41; 
	&#123;
		session_start&#40;&#41;;
		session_register&#40;'authorized'&#41;;
		$_SESSION&#91;'authorized'&#93; = true;

		header&#40;"Location&#58; admin/admin.php"&#41;;
		exit;
		echo $perm;
	&#125; 
	else if&#40;mysql_num_rows&#40;$selected_user&#41; != 0 && $perm == 0&#41;
	&#123; 
	
		session_start&#40;&#41;;
		session_register&#40;'authorized'&#41;;
		$_SESSION&#91;'authorized'&#93; = true;
		$_SESSION&#91;"tmima_id"&#93; = $tmima_id;
		header&#40;"Location&#58; upalliloi.php"&#41;;
		exit;
		
	&#125;else&#123;
		echo '<script language="javascript" type="text/javascript">
		alert&#40;\'Πληκτρολογήσατε λάθος το όνομα χρήστη ή τον κωδικό. \nΠαρακαλώ ξαναπροσπαθήστε\'&#41;;
		</script>';
	 
		echo "<script language='JavaScript'> window.location='index.php'; </script>";         

		exit;    
	&#125;

heisenberg
Δημοσιεύσεις: 88
Εγγραφή: 28 Αύγ 2009 15:15

Επιλογή χρηστών βάσει κάποιου στοιχείου

Δημοσίευση από heisenberg » 01 Δεκ 2010 17:51

σε αυτά

$selected = mysql_query($query)
$row = mysql_fetch_array($selected)

δεν έχεις βάλει το ; στο τέλος
Δεν υπάρχει καλύτερο πράγμα από το να έχεις γυναίκα δικηγόρο ...

netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

Επιλογή χρηστών βάσει κάποιου στοιχείου

Δημοσίευση από netpumber » 01 Δεκ 2010 18:21

και αυτό αλλα έπρεπε να αλλάξω και το if (mysql_num_rows($selected_user) σε (mysql_num_rows($selected)

Ευχαριστώ πολύ!

Απάντηση

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

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

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