Tja..!
någon som kan hjälpa mig att reda ut vad som är fel i min byta lösenordskod... direkt när man går in på sidan så står det att lösenordet är bytt och han byter till att man inte har något lösenord...
skriver man i alla information rätt så står det fortfarande att lösenordet är bytt men då gör han inte det... hjälp! :l
<?php
session_start(); // Alltid överst på sidan
// Kolla om inloggad = sessionen satt
if (!isset($_SESSION['sess_user'])) {
header("Location: ../index.php");
exit;
}
// ta fram user information.
$user = $_SESSION['sess_user'];
include "../conn.php"; // Databasanslutningen
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
...... massa skit ....
<body>
<?
$pass = md5($_POST['pass']);
$sql = "SELECT * FROM `uploadmembers` WHERE user='{$user}'";
$result = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($result) == 0){
while ($variable = mysql_fetch_array($result)){
$oldpass = $variable['pass'];
}} else {
$error = 1;
}
If(($_POST['newpass'] == $_POST['newpass2']) && ($_POST['oldpass'] == $oldpass)) {
$sql = "UPDATE uploadmembers SET pass='{$pass}' WHERE user='{$user}'";
$result = mysql_query($sql) or die(mysql_error());
$error = 0;
} else {
If ($_POST['newpass'] <> $_POST['newpass2']) {
$error = 2;
}
If ($_POST['oldpass'] <> $oldpass) {
$error = 3;
}
}
switch($error){
case 0:
echo 'Lösenordet har bytts.';
break;
case 1:
echo 'Du försöker exploita systemet och ladda upp med någon annans användare, fy skäms.';
break;
case 2:
echo 'Ditt nya lösenord överstämmer inte med varandra.';
break;
case 3:
echo 'Ditt gamla lösenord som du angett är fel';
break;
}
?>
</span> </p>
<form name="form1" method="post" action="index.php">
<table width="61%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Byt lösenord </td>
</tr>
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> <br>
Ditt gamla lösenord: <br>
<input name="oldpass" type="password" id="oldpass"></td>
</tr>
<tr>
<td>Ditt nya lösenord: </td>
</tr>
<tr>
<td><input name="newpass" type="text" id="newpass"></td>
</tr>
<tr>
<td>Ditt nya lösenord igen: <br>
<input name="newpass2" type="text" id="newpass2"></td>
</tr>
<tr>
<td><input type="submit" name="Submit" value="Byt lösenord"></td>
</tr>
</table></td>
</tr>
</table>
</form>
$sql = "SELECT * FROM `uploadmembers` WHERE user='{$user}'";
där $user är lika med $_SESSION['sess_user'].
Längre upp har du en kontroll av att $_SESSION['sess_user'] verkligen finns, annars skicka till index-sidan.
Det enda sätt du skulle kunna finna 0 (noll) rader i din SQL-körning är om du (användaren) blivit raderad från databasen efter inloggning.
Om däremot 0 (noll) rader hittades så kan du inte köra mysql_fetch_array() på resultatet, då det är tomt.
testade att köra med min gamla kod och ta bort user $user = $_SESSION['sess_user'];
det hjälpte inte, får upp att det gamla lösenordet är fel då... jag får samma fel om jag kör din kod..
testade att köra med min gamla kod och ta bort user $user = $_SESSION['sess_user'];
det hjälpte inte, får upp att det gamla lösenordet är fel då... jag får samma fel om jag kör din kod..
Om du tar bort $user = $_SESSION['sess_user']; bör du få det, ja.
tackar... det var ett steg åt rätt riktning iaf, dock finns fortfarande ett problem till och det är när man bara fyller i sitt gamla lösenord och inget på de nya lösenorden så byts lösenordet till ingenting... måste ha en spärr som gör att man inte kan få lösenordet bytt till ingenting...
hmm, ska jag göra så här då?:
$sql = "UPDATE uploadmembers SET pass = MD5('if empty({$_POST['newpass']})'
väldigt osäker på hur det ska se ut i den där raden... :/
okej... det fungerade, tackar!
då är det bara en sak till som jag funderar över och det är om man kan göra på något sätt så att textboxarna som du skriver in dina lösenord i inte töms om man skriver fel..
utan felmedelandet ska bara komma utan att boxarna töms...