Probleempje met wachtwoord verander code.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jasper De Moor

Jasper De Moor

23/08/2013 16:24:11
Quote Anchor link
Hallo iedereen,

Dus ik heb een bug als ik mn wachtwoord probeer te veranderen op mn website.
error:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/u404994150/public_html/editpass_parse.php on line 28 Warning: mysql_close() expects parameter 1 to be resource, null given in /home/u404994150/public_html/editpass_parse.php on line 29
code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
session_start(); // Start your sessions to allow your page to interact with session variables
include_once('header.php');
include_once('sidebar.php');
include_once('connect.php');

$oldpass=$_POST['oldpass'];
$oldpass=md5($oldpass);
$newpass=$_POST['newpass'];
$newpass2=$_POST['newpass2'];
$uid = $_SESSION['uid'];

// Function that will convert a user id into their username
function getcurpass($uid) {
    $sql = "SELECT password FROM users WHERE id='".$uid."' LIMIT 1";
    $res = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($res);
    return $row['password'];
}


$playerpass=getcurpass($uid);

if($oldpass == $playerpass){
if($newpass == $newpass2) {
$password = md5($newpass);
$sql = "UPDATE users SET password='".$password."' WHERE id='".$uid."'";
$res = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($res);
mysql_close($con);

}
else {
echo "<p>Uw wachtwoord zijn niet gelijk.</p>";
}
}
else{
echo "<p>Het ingegeven huidig wachtwoord is niet gelijk aan het huidige wachtwoord $uid,$oldpass,$playerpass,$newpass</p>";
}

include_once('footer.php');
?>


Groetjes Jasper,
 
PHP hulp

PHP hulp

25/12/2024 03:15:03
 
Obelix Idefix

Obelix Idefix

23/08/2013 19:33:09
Quote Anchor link
Ga debuggen ;-)

Als je zoekt op de foutmelding(en) krijg je genoeg uitleg wat er fout gaat.

Echo je query. Staat daar wat je verwacht?
Wat gebeurt er als je de query direct in php-admin uitvoert?

Ten aanzien van je code:
Waar controleer je of er iets verzonden is?
Waar controleer je of de $_POST-waarden bestaan?
Waarom variabelen aanmaken (regel 7 tm 11)?
Gebruik geen md5; is niet veilig.
Ik zou een function niet midden in code plaatsen, maar in een apart bestand of bovenaan in een bestand.
Bouw goede foutafhandeling ipv 'or die' (en laat zeker de bezoeker de foutmelding niet zien).
Spring je code in, zodat je kunt zien welke { bij } hoort. Nu heb je 2 if's (regel 23+24) vlak na elkaar. Zoek het dan maar uit welke code waarbij hoort.
Controleer of je query (regel 27) 1 update heeft opgeleverd.
Wat is nut van regel 28?
Ik zou geen " gebruik in php (regel 32, 35), maar '
Variabelen, regel 35, zou ik buiten quotes houden. Gebruik niet user-input, maar beveilig dit.
Zou overstappen op mysqli
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/08/2013 19:39:58
Quote Anchor link
Nou Jasper neem de adviezen van Obelix maar ter harte.
 

23/08/2013 19:43:54
Quote Anchor link
Waarschijnlijk zit de fout hierin, er zijn 2 dezelfde gegeven:

$oldpass=$_POST['oldpass'];
$oldpass=md5($oldpass);

Zo weet hij niet welke hij moet gebruiken.
 
Willem vp

Willem vp

24/08/2013 02:21:34
Quote Anchor link
Frank Martens op 23/08/2013 19:43:54:
Waarschijnlijk zit de fout hierin, er zijn 2 dezelfde gegeven:

$oldpass=$_POST['oldpass'];
$oldpass=md5($oldpass);

Zo weet hij niet welke hij moet gebruiken.

Dit is klinkklare onzin, maar het gaat even te ver om in dit draadje uit te leggen waarom. De code zelf is in ieder geval in orde.

Terug naar de foutmelding uit de eerste post: die is volledig terecht. In regel 27 voert mysql_query een UPDATE-query uit. In dat geval geeft mysql_query geen resource terug, maar alleen TRUE of FALSE. De $res die in regel 28 aan mysql_fetch_assoc wordt gevoerd, bevat dus geen resource, zodat er niets gefetcht kan worden. Ik zou ook niet weten wát je zou willen fetchen...
 
Jasper De Moor

Jasper De Moor

25/08/2013 15:20:00
Quote Anchor link
Frank Martens op 23/08/2013 19:43:54:
Waarschijnlijk zit de fout hierin, er zijn 2 dezelfde gegeven:

$oldpass=$_POST['oldpass'];
$oldpass=md5($oldpass);

Zo weet hij niet welke hij moet gebruiken.

Ik weet zelf dat dat niet de bug is :p



Toevoeging op 25/08/2013 15:24:23:

Obelix en Idefix op 23/08/2013 19:33:09:
Ga debuggen ;-)

Als je zoekt op de foutmelding(en) krijg je genoeg uitleg wat er fout gaat.

Echo je query. Staat daar wat je verwacht?
Wat gebeurt er als je de query direct in php-admin uitvoert?

Ten aanzien van je code:
Waar controleer je of er iets verzonden is?
Waar controleer je of de $_POST-waarden bestaan?
Waarom variabelen aanmaken (regel 7 tm 11)?
Gebruik geen md5; is niet veilig.
Ik zou een function niet midden in code plaatsen, maar in een apart bestand of bovenaan in een bestand.
Bouw goede foutafhandeling ipv 'or die' (en laat zeker de bezoeker de foutmelding niet zien).
Spring je code in, zodat je kunt zien welke { bij } hoort. Nu heb je 2 if's (regel 23+24) vlak na elkaar. Zoek het dan maar uit welke code waarbij hoort.
Controleer of je query (regel 27) 1 update heeft opgeleverd.
Wat is nut van regel 28?
Ik zou geen " gebruik in php (regel 32, 35), maar '
Variabelen, regel 35, zou ik buiten quotes houden. Gebruik niet user-input, maar beveilig dit.
Zou overstappen op mysqli

Veel om te lezen maar heb er veel van geleerd ;)
En ik zou inderdaad beter is mysqli leren

Toevoeging op 25/08/2013 15:35:34:

BTW: Ik heb het gefixt en normaal zien spelers de foutmelding ook niet maar dat was maar tijdelijk ;)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.