Γιατί δεν μπαίνει στην if

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

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

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

Γιατί δεν μπαίνει στην if

Δημοσίευση από netpumber » 25 Οκτ 2010 15:24

Καλησπέρα σας

έχω αυτό το κομμάτι κώδικα απο ένα login page που φτιάχνω.

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml">

<head>

<!-- Meta Data -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<!--Links With Css-->
<link rel="stylesheet" type="text/css" href="css/loginp_style.css" />	

<!-- Title Of Page -->
<title>Login Page</title>
	
</head>

<!------------------------------------------------------------------------------------------------------------->

<?php

ini_set &#40;'display_errors',1&#41;;
error_reporting &#40;E_ALL&#41;;

include 'configure.php';


if &#40;isset &#40;$_POST&#91;'login'&#93;&#41;&#41;&#123;
	
	$usr  = mysql_real_escape_string&#40;$_POST&#91;'username'&#93;&#41;;
	$pass = md5&#40;$_POST&#91;'password'&#93;&#41;;

	//Check For Connection
	
	$connect = mysql_connect&#40;$dbhost.'&#58;'.$dbport,$dbusername,$dbpassword&#41;;
	
	if &#40;!$connect&#41; &#123;
		echo '<script language="javascript" type="text/javascript">
			  alert&#40;\'Η σύνδεση στη βάση δεδομενων απέτυχε. \nΠαρακαλώ ελένξτε τα στοιχεία στο αρχείο configre.php\'&#41;;
			  </script>';
		&#125;

	//Check For Database selection

	$dbselect = mysql_select_db&#40;$dbdatabase , $connect&#41;;

	if &#40;!$dbselect&#41; &#123;
		echo '<script language="javascript" type="text/javascript">
			  alert&#40;\'Η επιλογή της βάσης δεδομενων απέτυχε. \nΠαρακαλώ ελένξτε τα στοιχεία στο αρχείο configre.php \'&#41;;
			  </script>';
		&#125;
		

	$query =  "select id from users where username='$usr' AND password='$pass' ORDER BY id";
	$select_user = mysql_query&#40;$query&#41;;

	if &#40;mysql_num_rows&#40;$select_user&#41; != 0&#41; 
		&#123;
    		session_start&#40;&#41;;
    		session_register&#40;'authorized'&#41;;
    		$_SESSION&#91;'authorized'&#93; = true;
    
    		header&#40;"Location&#58; main.html"&#41;;
   			 exit;
		&#125; 
	else 
		&#123; 
			header&#40;"Location&#58; index.php"&#41;;
    		exit;	
		&#125;


	mysql_close&#40;&#41;; 
&#125;

?>


<body>

<div class="container">

<!--Login Form-->
<form id="login-form" action="index.php" method="post">
		
    <label><b>Όν. Χρήστη&#58;</b></label>
    <input type="text" id="login" name="username"/>
                
    <label><b>Κωδικός&#58;</b></label>
    <input type="password" id="password" name="password"/>
                
    <br />
                
    <input type="submit" name="login" style="margin&#58; -20px 0 0 287px;" class="button"  value="Σύνδεση"/>	

</form>


</div>	

</body>


</html>
Το θέμα είναι οτι δεν δουλεύει και απο ό,τι κατάλαβα η php δεν μπαίνει κάν στην πρώτη if. To κοιτάω τόση ώρα και δν μπορώ να βρώ που γίνεται το λάθος..

Μπορεί κανείς να μου ανοίξει τα μάτια ;; :P :D

ευχαριστώ!

sxsweb
Δημοσιεύσεις: 33
Εγγραφή: 14 Δεκ 2009 16:24

Γιατί δεν μπαίνει στην if

Δημοσίευση από sxsweb » 25 Οκτ 2010 17:03

Ελέγχεις το $_POST['login']. Μήπως πρέπει να είναι $_POST['username']?
(Μέσα στην συνθήκη του if)

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

Γιατί δεν μπαίνει στην if

Δημοσίευση από netpumber » 25 Οκτ 2010 18:48

μα γιατί να το κάνω έτσι εαφού το name του κουμπιού μου είναι login.

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

  <input type="submit" name="login" style="margin&#58; -20px 0 0 287px;" class="button"  value="Σύνδεση"/>	

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Γιατί δεν μπαίνει στην if

Δημοσίευση από fafos » 25 Οκτ 2010 18:57

mpainei sto proto if.. psakse parakato gia to provlhma.. to mysql_real_escape_string gia paradeigma na to dineis panta meta thn syndesh me thn vash kai oxi prin..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

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

Γιατί δεν μπαίνει στην if

Δημοσίευση από netpumber » 25 Οκτ 2010 19:28

ναι λοιπόν έβαζα κομμάτια κώδικα σε σχόλιο σιγα σιγά για να βλέπω ποια τρέχει και ποιά όχι.
όταν έχω αυτό το κομμάτι σε σχόλια δεν δουλέυει το script.

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

if &#40;mysql_num_rows&#40;$select_user&#41; != 0&#41; 
		&#123;
    		session_start&#40;&#41;;
    		session_register&#40;'authorized'&#41;;
    		$_SESSION&#91;'authorized'&#93; = true;
    
    		header&#40;"Location&#58; main.html"&#41;;
   			 exit;
		&#125; 
	else 
		&#123; 
			header&#40;"Location&#58; index.php"&#41;;
			echo 'xaxa';
    		exit;	
		&#125;

	mysql_close&#40;&#41;;
Έχω βάλει και το echo 'xaxa'; για να δώ αν εκτελείται. Επίσης άλλαξα και τη θέση του mysql_real_escape_string όπως προανέφερε ο φίλος fafos.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Γιατί δεν μπαίνει στην if

Δημοσίευση από fafos » 25 Οκτ 2010 20:30

gia afairese to mysql_close();
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

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

Γιατί δεν μπαίνει στην if

Δημοσίευση από netpumber » 25 Οκτ 2010 20:34

χαχα έτσι δουλεύει χωρίς να θυμάμαι τι άλλαξα :p

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http&#58;//www.w3.org/1999/xhtml">

<head>

<!-- Meta Data -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<!--Links With Css-->
<link rel="stylesheet" type="text/css" href="css/loginp_style.css" />	

<!-- Title Of Page -->
<title>Login Page</title>
	
</head>

<!------------------------------------------------------------------------------------------------------------->
<?php

ini_set &#40;'display_errors',1&#41;;
error_reporting &#40;E_ALL&#41;;

include 'configure.php';


if &#40;isset &#40;$_POST&#91;'login'&#93;&#41;&#41;&#123;

	
	//Check For Connection
	
	$connect = mysql_connect&#40;$dbhost.'&#58;'.$dbport,$dbusername,$dbpassword&#41;;
	
	if &#40;!$connect&#41; &#123;
		echo '<script language="javascript" type="text/javascript">
			  alert&#40;\'Η σύνδεση στη βάση δεδομενων απέτυχε. \nΠαρακαλώ ελένξτε τα στοιχεία στο αρχείο configre.php\'&#41;;
			  </script>';
		&#125;
			
	$usr  = mysql_real_escape_string&#40;$_POST&#91;'username'&#93;&#41;;
	$pass = md5&#40;$_POST&#91;'password'&#93;&#41;;

	//Check For Database selection

	$dbselect = mysql_select_db&#40;$dbdatabase , $connect&#41;;

	if &#40;!$dbselect&#41; &#123;
		echo '<script language="javascript" type="text/javascript">
			  alert&#40;\'Η επιλογή της βάσης δεδομενων απέτυχε. \nΠαρακαλώ ελένξτε τα στοιχεία στο αρχείο configre.php \'&#41;;
			  </script>';
		&#125;
		

	$query =  "select id from users where username='$usr' AND password='$pass' ORDER BY id";
	$select_user = mysql_query&#40;$query&#41;;
	
		
		if &#40;mysql_num_rows&#40;$select_user&#41; != 0&#41; 
	&#123;
    		session_start&#40;&#41;;
    		session_register&#40;'authorized'&#41;;
    		$_SESSION&#91;'authorized'&#93; = true;
    
    		header&#40;"Location&#58; main.php"&#41;;
   			exit;
	&#125; 
	else 
	&#123; 
			header&#40;"Location&#58; index.php"&#41;;
    		exit;	
	&#125;

mysql_close&#40;&#41;;
&#125;



?>

<body>

<div class="container">

<!--Login Form-->
<form id="login-form" action="index.php" method="post">
		
    <label><b>Όν. Χρήστη&#58;</b></label>
    <input type="text" id="login" name="username"/>
                
    <label><b>Κωδικός&#58;</b></label>
    <input type="password" id="password" name="password"/>
                
    <br />
                
    <input type="submit" name="login" style="margin&#58; -20px 0 0 287px;" class="button"  value="Σύνδεση"/>	

</form>

</div>	

</body>


</html>
Να ρωτήσω και κάτι άλλο .. Πως μπορώ να το κάνω να βγάζει μήνυμα αν βάλεις λάθος κωδικό ή ονομα χρήστη;;

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Γιατί δεν μπαίνει στην if

Δημοσίευση από fafos » 25 Οκτ 2010 20:40

emena oute trexei oute vgazei ta mhnymata pou exeis gia lathos syndeseis..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

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

Γιατί δεν μπαίνει στην if

Δημοσίευση από netpumber » 25 Οκτ 2010 20:49

έχεις δίκιο. άλλαξα το username kai to password sto configure.php και δεν μου πέταξε τα μηνύματα. Παρ' όλα αυτά αν τα βάλω σωστά με πeτάει στο main.php. Αναρωτιέμαι που κολλάει..

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Γιατί δεν μπαίνει στην if

Δημοσίευση από fafos » 25 Οκτ 2010 20:56

netpumber έγραψε:έχεις δίκιο. άλλαξα το username kai to password sto configure.php και δεν μου πέταξε τα μηνύματα. Παρ' όλα αυτά αν τα βάλω σωστά με πeτάει στο main.php. Αναρωτιέμαι που κολλάει..
stis syndeseis den vazoume if.. vazoume or die(..edo to mhnyma..)
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

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

Γιατί δεν μπαίνει στην if

Δημοσίευση από netpumber » 25 Οκτ 2010 21:07

Ναι αλλα κάπου αλλού που το χρησιμοποιήσα δούλεψε.. Τεσπα Θα το τεστάρω.. Έχεις καμιά ιδέα για το πώς να το κάνω να πετάει μήνυμα αν έχει βάλεί λάθος κωδικό ή ονομα χρήστη ο χρήστης ;;

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Γιατί δεν μπαίνει στην if

Δημοσίευση από fafos » 25 Οκτ 2010 21:32

netpumber έγραψε:Ναι αλλα κάπου αλλού που το χρησιμοποιήσα δούλεψε.. Τεσπα Θα το τεστάρω.. Έχεις καμιά ιδέα για το πώς να το κάνω να πετάει μήνυμα αν έχει βάλεί λάθος κωδικό ή ονομα χρήστη ο χρήστης ;;
to header location den tha afhsei na sou emfanisei kapoio mhnyma... h monh lysh einai na to kaneis kai auto se javascript:

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

   else
      &#123;
echo '<script language="javascript" type="text/javascript">
alert&#40;\'wrong username or password\'&#41;;
           </script>';
		   
echo "<script language='JavaScript'> window.location='index.php'; </script>";		   
		   

          exit&#40;&#41;;   
      &#125;
mia allh lysh einai na stelneis me ton header location kai mia metavlhth lathous (p.x. index.php?error=user).. katopin mesa sto index pou tha ton paei tha tou deiksei ena mhnyma:

if($_GET[error] == 'user) {

print to lathos edo
}
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

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

Γιατί δεν μπαίνει στην if

Δημοσίευση από netpumber » 25 Οκτ 2010 21:38

Σε ευχαριστώ πάρα πολύ φίλε μου.. :)

Άβαταρ μέλους
lebrand
Δημοσιεύσεις: 13
Εγγραφή: 10 Μάιος 2009 02:23

Γιατί δεν μπαίνει στην if

Δημοσίευση από lebrand » 28 Οκτ 2010 07:21

Διάβαζα παραπάνω ότι αναφέρεις πως το κουμπί σου δημιουργεί μεταβλητή login και όχι username.

Όμως, έτσι κι αλλιώς, μπορείς να ελέγξεις οποιαδήποτε μεταβλητή σε βολεύει.

Με τα λίγα που είδα, χρησιμοποιείς isset($_POST['login']) αλλά καλό θα είναι να το κάνεις σε input type text και όχι submit.

Δηλαδή να ελέγξεις για παράδειγμα την username :

if (isset($_POST['username']))

ή εάν έχεις την $_globals ΟΝ να πεις απλά:

if ($username) ή if (isset($username))


Από την άλλη καλό είναι να δημιουργήσεις έναν μεταβαλόμενο εσωτερικό κωδικό ο οποίος να δημιουργεί από μόνος του μια input type hidden ως εξής :

Άσχετα εάν η hidden δε φαίνεται, μπορεί κάποιος εύκολα να δει τον κώδικα που τρέχει στον client, εν προκειμένω κάποιον browser.

Αν όμως αυτή η hidden input δημιουργείται δυναμικά από την PHP τότε ναι μεν θα μπορέσει κάποιος να τη βρει στον client κώδικα αλλά έστω και με την ανανέωση της σελίδας αυτή θα αλλάξει και όνομα και τιμή.

Άρα θα έχεις μια ΜΕΤΑΒΑΛΟΜΕΝΗ [ΜΕΤΑΒΛΗΤΗ] ΜΕΤΑΒΛΗΤΗ !

Έτσι, κι αν ακόμη κάποιος κάνει POST όλες τις απαιτούμενες μεταβλητές στη σελίδα σου που κάνει τον έλεγχο ΔΕ ΘΑ ΕΧΕΙ ΥΠΟΛΟΓΙΣΕΙ [θα αργήσει να το καταλάβει!] ότι η hidden σου είναι μια μεταβλητή μεταβλητή !

Το παραπάνω, μπορείς να το κάνεις on the fly ή να φτιάξεις έναν πολύ απλό πίνακα σε μια βάση σου με μια στήλη που θα κρατάει μόνο τα ονόματα των μεταβλητών ώστε κάθε φορά να ελέγχει και τη μοναδικότητα του ονόματος της μεταβλητής. Εάν τύχει να βρει την ίδια [σπάνιο αλλά μπορεί να γίνει] να την ξαναφτιάχνει. Με αυτό τον τρόπο καλύπτεις κάθε περίπτωση.

Ακόμη ένα ζήτημα σχετικά με username και password μεταβλητές είναι όπως αναφέρεται παραπάνω, η περίπτωση που κάποιος από άλλη σελίδα postάρει στη δική σου, εκεί που κάνεις τον έλεγχο.

Καλό λοιπόν θα είναι να γράψεις 2-3 σειρούλες php και να μη το επιτρέπεις αυτό. Να επιτρέπεις το postάρισμα σημαντικών στοιχείων μόνο από τον δικό σου διακομιστή !

Αυτά τα ολίγα !
Le Brand International Corporation
14 Efxeinou Pontou Str.
66100 Drama

Απάντηση

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

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

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