Πρόβλημα με script

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

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

Απάντηση
Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πρόβλημα με script

Δημοσίευση από vassilism » 13 Φεβ 2008 19:48

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

Σε ένα login script θέλω να δίνω στο χρήστη την δυνατότητα να μπορεί να αλλάζει τον κωδικό του.
Σε μια φόρμα υπάρχουν δυο πεδία, το ένα έχει όνομα pas1, και είναι για να βάζει ο χρήστης τον παλιό κωδικό και το άλλο pas2 για να βάζει τον καινούριο.
Θέλω να συγκρίνω αν και οι δυο κωδικοί είναι ίδιοι τότε να κάνει update τον κωδικό και να πηγαίνει στην σελίδα logout.php.

Κάνω το εξής αλλά δεν δουλεύει σωστά:

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

<?php
$pas1=$_POST&#91;'pas1'&#93;;
if&#40;$pas1<>$password&#41;&#123;
echo&#40;"<font class=error>Ο τρέχων κωδικός που πληκτρολογήσατε είναι λάθος</font>"&#41;;
&#125;
else&#123;
if&#40;isset&#40;$_POST&#91;'submit'&#93;&#41;&&$pas1==$password&#41;&#123;

   $pas2=md5&#40;$_POST&#91;'pas2'&#93;&#41;; 
   $query = "UPDATE users SET password ='$pas2' WHERE username='$username'";
   $result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;;   
?>
<script language = "Javascript">location.replace&#40;"logout.php"&#41;;</script> 
<? &#125;&#125;?>
Καμιά ιδέα?

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

Πρόβλημα με script

Δημοσίευση από Banavas » 13 Φεβ 2008 20:54

Για δοκίμασε αυτό

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

<?php 
$pas1=md5&#40;$_POST&#91;'pas1'&#93;&#41;; 
if&#40;$pas1<>$password&#41;&#123; 
echo&#40;"<font class=error>Ο τρέχων κωδικός που πληκτρολογήσατε είναι λάθος</font>"&#41;; 
&#125; 
else&#123; 
if&#40;isset&#40;$_POST&#91;'submit'&#93;&#41;&&$pas1==$password&#41;&#123; 

   $pas2=md5&#40;$_POST&#91;'pas2'&#93;&#41;; 
   $query = "UPDATE users SET password ='$pas2' WHERE username='$username'"; 
   $result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;;    
?> 
<script language = "Javascript">location.replace&#40;"logout.php"&#41;;</script> 
<? &#125;&#125;?> 
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πρόβλημα με script

Δημοσίευση από vassilism » 13 Φεβ 2008 21:55

Το άλλαξα αλλά με το που ανοίγω την σελίδα μου βγάζει:
Ο τρέχων κωδικός που πληκτρολογήσατε είναι λάθος.
Οι if σου φένονται σωστές?

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

Πρόβλημα με script

Δημοσίευση από Banavas » 13 Φεβ 2008 22:15

To $password από που έρχεται;
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πρόβλημα με script

Δημοσίευση από vassilism » 13 Φεβ 2008 23:24

Έρχεται από session στην αρχή της σελίδας μου

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

<? 
session_start&#40;&#41;; 
if&#40;!session_is_registered&#40;authenticated&#41;&#41;&#123; 
header&#40;"location&#58;login.php"&#41;; 
&#125; 
$username=$_SESSION&#91;'username'&#93;;
$password=$_SESSION&#91;'password'&#93;;
?>
Αν κάνω το εξής μου αλλάζει τον κωδικό.

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

<?php 
if&#40;isset&#40;$_POST&#91;'submit'&#93;&#41;&#41;&#123;
   $pas2=md5&#40;$_POST&#91;'pas2'&#93;&#41;; 
   $query = "UPDATE users SET password ='$pas2' WHERE username='$username'"; 
   $result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;;    
?> 
<script language = "Javascript">location.replace&#40;"logout.php"&#41;;</script> 
<? &#125;?>
Το πρόβλημα είναι όταν θέλω να συγκρίνω τον κωδικό με το πεδίο pas1.

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

Πρόβλημα με script

Δημοσίευση από Banavas » 13 Φεβ 2008 23:51

Retest...

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

<?php 
$pas1=$_POST&#91;'pas1'&#93;;
if&#40;isset&#40;$_POST&#91;'submit'&#93;&#41; && $pas1==$password&#41;&#123; 
   $pas2=md5&#40;$_POST&#91;'pas2'&#93;&#41;; 
   $query = "UPDATE users SET password ='$pas2' WHERE username='$username'"; 
   $result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;;    
?> 
<script language = "Javascript">location.replace&#40;"logout.php"&#41;;</script> 
<? &#125;
else&#123; 
echo "<font class=error>Ο τρέχων κωδικός που πληκτρολογήσατε είναι λάθος</font>"; 
&#125;?> 
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πρόβλημα με script

Δημοσίευση από vassilism » 14 Φεβ 2008 00:15

Αυτό ήταν το πρώτο πράγμα που δοκίμασα.
Με το που ανοίγω την σελίδα μου βγάζει:
Ο τρέχων κωδικός που πληκτρολογήσατε είναι λάθος, χωρίς να κάνω τίποτα.
Μήπως υπάρχει κάποιο λάθος εδώ?

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

if&#40;isset&#40;$_POST&#91;'submit'&#93;&#41; && $pas1==$password&#41;

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

Πρόβλημα με script

Δημοσίευση από fafos » 14 Φεβ 2008 00:47

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

<?php
$pas1=$_POST&#91;'pas1'&#93;;
if&#40;isset&#40;$_POST&#91;'submit'&#93;&#41;&#123;
 if&#40;$pas1==$password&#41;&#123;
   $pas2=md5&#40;$_POST&#91;'pas2'&#93;&#41;;
   $query = "UPDATE users SET password ='$pas2' WHERE username='$username'";
   $result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;;   
?>
<script language = "Javascript">location.replace&#40;"logout.php"&#41;;</script>
<? &#125;
else&#123;
echo "<font class=error>Ο τρέχων κωδικός που πληκτρολογήσατε είναι λάθος</font>";
&#125;
&#125;?>

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πρόβλημα με script

Δημοσίευση από vassilism » 15 Φεβ 2008 00:44

Γεια σου πατρίδα :D
Τι κάνεις?
Το είχα κάνει και αυτό αλλά δεν δουλεύει, μου βγάζει μια άσπρη οθόνη :hammer:

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

Πρόβλημα με script

Δημοσίευση από Banavas » 15 Φεβ 2008 08:05

Καλημέρα,

Αυτό θα δουλέψει. Η ασπρη οθόνη είναι από εδώ:

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

if&#40;isset&#40;$_POST&#91;'submit'&#93;&#41;        &#41;           &#123; 
Για να βελτιωθείς λιγάκι, μόλις βλέπεις άσπρη οθόνη πρέπει να καταλαβαίνεις οτι υπάρχει σφάλμα στην σύνταξη του κώδικα. Από τα πιο συνηθισμένα είναι να ξεχάσεις το ερωτηματικό στο τέλος της εντολής, να ξεχάσεις ή να μην κλείσεις σωστά τις αγκύλες {} σε εντολές if,while κλπ, και το να μην αντιστοιχούν οι αριστερές παρενθέσεις με τις δεξιές (όπως εδώ), να κάνεις include ανύπαρκτα αρχεία ή να τρέχεις functions με σφάλματα κλπ.
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πρόβλημα με script

Δημοσίευση από vassilism » 15 Φεβ 2008 13:47

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

Το θέμα είναι ότι πάλι δεν δουλεύει σωστά.
Ναι μεν τρέχει αλλά, δεν κάνει τη σύγκριση με τον κωδικό και όταν πατάω submit μου βγάζει πάντα τη συνθήκη της else:
Ο τρέχων κωδικός που πληκτρολογήσατε είναι λάθος

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

Πρόβλημα με script

Δημοσίευση από Banavas » 15 Φεβ 2008 14:14

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

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

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

echo "Submit=ok<br>pas1=".$pas1."<br>password=".$password;

if&#40;$pas1==$password&#41;&#123; 
Βάλε αυτόν τον κώδικα για να δούμε τι γίνεται. Θα μας δείξει αν έχει δίκιο που δεν τα βρίσκει ίδια. Δεν είναι δύσκολο να βάζεις τέτοιες εντολές και μόνος σου.
Αν σου τυπώσει pas1 kai password ίδια πέταξε το computer σου :hammer:
Πιθανόν κάποιο από τα δύο δεν θα έρχεται....
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πρόβλημα με script

Δημοσίευση από vassilism » 15 Φεβ 2008 19:15

Μάρκο εκτιμώ ιδιαίτερα τις συμβουλές που μου δίνεις.
Τελικά είχες απόλυτο δίκιο. Δεν ερχόταν το password από τη session και σας παίδευα όλους.
Το πρόβλημα λύθηκε και σας ευχαριστώ πολύ.

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

<?php 
$id=$_GET&#91;'id'&#93;;
$query = "SELECT * FROM users WHERE username='$username'"; 
$result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;; 
while &#40;$rows = mysql_fetch_array&#40;$result&#41;&#41; 
&#123;  
$password= $rows&#91;"password"&#93;;
&#125;
$pas1=md5&#40;$_POST&#91;'pas1'&#93;&#41;; 
if&#40;isset&#40;$_POST&#91;'submit'&#93;&#41;&#41;&#123;
 if&#40;$pas1==$password&#41;&#123; 
   $pas2=md5&#40;$_POST&#91;'pas2'&#93;&#41;; 
   $query = "UPDATE users SET password ='$pas2' WHERE username='$username'"; 
   $result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;;    
?> 
<script language = "Javascript">location.replace&#40;"logout.php"&#41;;</script> 
<? &#125; 
else&#123; 
echo "<font class=error>Ο τρέχων κωδικός που πληκτρολογήσατε είναι λάθος</font>"; 
&#125; 
&#125;?>

Απάντηση

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

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

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