13. november 2006 - 16:50
Der er
10 kommentarer og 2 løsninger
Rettelse / validering af script
Hej Eksperter. Jeg har denne her kode, men jeg er ikke tilfreds med den, men jeg ved ikke helt hvordan jeg skal gøre det anderledes. Jeg vil gerne have en mere simpel kode. Helst en sådan kode som anses for at være den "rigtige". Koden: <?php session_start(); require("SSI/sql.php"); // Password request $oldPass = md5($_REQUEST["oldPass"]); $newPass = md5($_REQUEST["newPass"]); $reTypePass = md5($_REQUEST["reTypePass"]); // Username $user = $_SESSION["user"]; connect(); if(!empty($oldPass)){ $oldPassValue = 'true'; } else{ $oldPassValue = 'false'; } if(!empty($newPass)){ $newPassValue = 'true'; } else{ $newPassValue = 'false'; } if(!empty($reTypePass)){ $reTypePassValue = 'true'; } else{ $reTypePassValue = 'false'; } $q = mysql_query("SELECT * login WHERE user='$user'"); $row = mysql_fetch_array($q); if(($oldPassValue == "true") AND ($oldPass == $row["pass"])){ $oldPassCompareValue = "true" } else{ $oldPassCompareValue = "false" } if(($newPassValue != "false") AND ($reTypePassValue != "false") AND ($newPass == $reTypePass)){ $newPassCompareValue = "true"; } else{ $newPassCompareValue = "true"; } if(($oldPassCompareValue == "true") AND ($newPassCompareValue == "true")){ mysql_query("UPDATE login SET pass='$newPass' WHERE user='$user'"); } else{ echo 'Dit password kunne ikke ændres'; } ?> På forhånd tak. //mcardle
Annonceindlæg fra Computerworld it-jobbank
13. november 2006 - 18:43
#1
Jeg ville nok lave noget lign. det her; <?php session_start(); require("SSI/sql.php"); // Password request $oldPass = md5($_REQUEST["oldPass"]); $newPass = md5($_REQUEST["newPass"]); $reTypePass = md5($_REQUEST["reTypePass"]); // Username $user = $_SESSION["user"]; connect(); if(!empty($oldPass) && !empty($newPass) && !empty($reTypePass)) { $q = mysql_query("SELECT COUNT(*) AS userpass FROM login WHERE user='$user' AND pass = '$oldPass'"); if(mysql_result($q,0) == 1) mysql_query("UPDATE login SET pass='$newPass' WHERE user='$user'"); echo 'Dit password erændret'; } else { echo 'Dit password kunne ikke ændres'; } ?>
13. november 2006 - 18:46
#2
Der sneg sig lige en lille fejl ind; <?php session_start(); require("SSI/sql.php"); // Password request $oldPass = md5($_REQUEST["oldPass"]); $newPass = md5($_REQUEST["newPass"]); $reTypePass = md5($_REQUEST["reTypePass"]); // Username $user = $_SESSION["user"]; connect(); if(!empty($oldPass) && !empty($newPass) && !empty($reTypePass)) { $q = mysql_query("SELECT COUNT(*) AS userpass FROM login WHERE user='$user' AND pass = '$oldPass'"); if(mysql_result($q,0) == 1) mysql_query("UPDATE login SET pass='$newPass' WHERE user='$user'"); else $error = 1; } else $error = 1; if ($error) echo 'Dit password kunne ikke ændres'; else echo 'Dit password er ændret'; ?>
13. november 2006 - 18:50
#3
<?php session_start(); require("SSI/sql.php"); // Password request $oldPass = md5($_REQUEST["oldPass"]); $newPass = md5($_REQUEST["newPass"]); $reTypePass = md5($_REQUEST["reTypePass"]); connect(); $q = mysql_query("SELECT * login WHERE user='".$_SESSION['user']."'"); $row = mysql_fetch_array($q); // Tjekker om new/retype password er ens og om gammel password er ens med det i databasen if(($newPass == $reTypePass) && ($oldPass == $row[pass])){ $tjek = "1"; mysql_query("UPDATE login SET pass='$newPass' WHERE user='$user'"); } if($tjek){ echo 'Dit password kunne ikke ændres'; } ?>
13. november 2006 - 18:57
#4
oh ja jeg tjekker selvfølgelig ikke om de to nye passwords er ens i min; if(!empty($oldPass) && !empty($newPass) && !empty($reTypePass) && ($newPass == $reTypePass)) {
13. november 2006 - 19:05
#5
hehe og jeg tjekker ikke om de er tomme :P
13. november 2006 - 19:09
#6
Jeg har ikke skrevet kommentarer ind endnu, men jeg vil jo gerne have, at man kan se hvilken del man har glemt at skrive. Forresten vil jeg også gerne have at den springer hele det her over, hvis der ikke er nogen af dem der er udfyldt. Det er nemlig en valideringsside for flere ting og man må gerne lade være udfylde dem alle 3, men er der én der er udfyldt skal alle sammen være det.
13. november 2006 - 19:09
#7
Så det godt... ;-)
13. november 2006 - 19:41
#8
Det tjekker den også nu... ved ahv eksempel... :)
13. november 2006 - 19:53
#9
Der kommer ikke nogen error
13. november 2006 - 20:11
#10
<?php session_start(); require("SSI/sql.php"); // Password request $oldPass = $_REQUEST["oldPass"]; $newPass = $_REQUEST["newPass"]; $reTypePass = $_REQUEST["reTypePass"]; // Username $user = $_SESSION["user"]; connect(); if(!empty($oldPass) || !empty($newPass) || !empty($reTypePass)) { if (empty($oldPass)) $error[] = "Gammel kode mangler"; if (empty($newPass)) $error[] = "Ny kode mangler"; if (empty($reTypePass)) $error[] = "Retype kode mangler"; if ($newPass != $reTypePass) $error[] = "De to koder er ikke ens"; if(count($error) == 0) { $q = mysql_query("SELECT COUNT(*) AS userpass FROM login WHERE user='$user' AND pass = '".md5($oldPass)."'"); if(mysql_result($q,0) == 1) mysql_query("UPDATE login SET pass='".md5($newPass)."' WHERE user='$user'"); else $error[] = "Den gamle kode er ikke rigtig"; } } for($i = 0; $i <= count($error); $i++) echo $error[$i]."<br />"; ?>
14. november 2006 - 19:26
#11
Det virker stadig ikke... Jeg ved ikke helt hvad der er i vejen, for det ser jo rigtig nok ud... Jeg poster lige den foregående side også, det kan være i kan finde fejlen. <?php session_start(); if(!$_SESSION["user"]){ header("Location: innerContent.php"); } require("SSI/sql.php"); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>User Profile</title> <style type="text/css"> body{ background-color: #d88d8d; } #functionTable{ width: 750px; border: 0px #000000 solid; border-collapse: collapse; } .discription{ width: 550px; text-align: left; padding-left: 10px; } td{ text-align: center; border: 1px #000000 solid; } #profilTxt{ width: 750px; height: 100px; } </style> <?php $user = $_SESSION['user']; connect(); $q = mysql_query("SELECT * FROM profil WHERE user='$user'"); $a = mysql_fetch_array($q); $dbAge = explode("-", $a["birthday"]); $ageTime = mktime(0, 0, 0, $dbAge[0], $dbAge[1], $dbAge[2]); // Get the person's birthday timestamp $t = time(); // Store current time for consistency $age = ($ageTime < 0) ? ( $t + ($ageTime * -1) ) : $t - $ageTime; $year = 60 * 60 * 24 * 365; $ageYears = $age / $year; $ageYears = floor($ageYears); close(); ?> </head> <body> <h3>Din profil:</h3> <form action="saveProfile.php" method="post"> <table id="functionTable"> <tr> <td class="discription"><b>Brugernavn</b> - Dit brugernavn kan ikke ændres.</td> <td><?php echo $_SESSION["user"]; ?></td> </tr> <tr> <td class="discription"><b>Kodeord</b> - Skriv dit gamle kodeord ind og det nye bagefter.</td> <td> Dit gamle kodeord:<br /> <input type="password" name="oldPass" /><br /> Dit nye kodeord:<br /> <input type="password" name="newPass" /><br /> Gentag kodeord:<br /> <input type="password" name="reTypePass" style="margin-bottom: 5px;" /> </td> </tr> <tr> <td class="discription"> <b>Fødselsdato</b> - Bør ikke ændres, da den selv ændre din alder, når du fylder år - Du er: <?php echo $ageYears; ?> </td> <td> <table> <tr> <td style="border: 0px #000000 solid;">Dag:</td> <td style="border: 0px #000000 solid;">Måned:</td> <td style="border: 0px #000000 solid;">År:</td> </tr> <tr> <td style="border: 0px #000000 solid;"> <select name="day"> <?php for($i = 1; $i <= 31; $i++){ if($dbAge[1] == $i){ echo '<option value="'.$i.'" selected="selected">'.$i.'</option>'; } else{ echo '<option value="'.$i.'">'.$i.'</option>'; } } ?> </select> </td> <td style="border: 0px #000000 solid;"> <select name="month"> <?php for($i = 1; $i <= 12; $i++){ if($dbAge[0] == $i){ echo '<option value="'.$i.'" selected="selected">'.$i.'</option>'; } else{ echo '<option value="'.$i.'">'.$i.'</option>'; } } ?> </select> </td> <td style="border: 0px #000000 solid;"> <select name="year" style="margin-bottom: 5px;"> <?php for($i = date("Y")-90; $i <= date("Y")-15; $i++){ if($dbAge[2] == $i){ echo '<option value="'.$i.'" selected="selected">'.$i.'</option>'; } else{ echo '<option value="'.$i.'">'.$i.'</option>'; } } ?> </select> </td> </tr> </table> </td> </tr> <tr> <td class="discription"><b>Email</b> - Skriv din nye email i feltet til højre</td> <td style="padding-top: 5px; padding-bottom: 5px;"> <input type="text" name="email" value="<?php echo $a['email']; ?>" onclick="this.value='';" /> </td> </tr> <tr> <td class="discription"> <b>Profilbillede</b> - Du kan kun have ét profilbillede, så det du har vil blive skiftet ud </td> <td style="padding-top: 5px; padding-bottom: 5px;"> <a href="#" onclick="window.open('changeProfilePic.php','_blank','width=450, height=500');" style="color: #000000;">Klik her for at skifte billede</a> </td> </tr> <tr> <td class="discription"><b>Køn</b></td> <td style="padding-top: 5px; padding-bottom: 5px;"> <?php echo $a["gender"]; ?> </td> </tr> </table> <div style="font-weight: bold;">Profiltekst:</div> <textarea name="profileTxt" id="profilTxt"><?php echo $a["profiltekst"]; ?></textarea> <br /> <br /> <input type="submit" value="Gem" style="float: left;" /> </form> <form action="/delProfile.php" onsubmit="return confirm('SLET PROFIL - ER DU SIKKER?');"><input type="submit" value="Slet Profil" style="float: right;" /></form> </body> </html>
15. november 2006 - 05:42
#12
Jeg fik det endelig til at virke, jeg brugte den sidste... Det var mig der havde lavet en fejl... Sorry :s
Vi tilbyder markedets bedste kurser inden for webudvikling