Avatar billede mcardle Nybegynder
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
Avatar billede ahv Nybegynder
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';
}
?>
Avatar billede ahv Nybegynder
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';
?>
Avatar billede zynzz Praktikant
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';
}

?>
Avatar billede ahv Nybegynder
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)) {
Avatar billede zynzz Praktikant
13. november 2006 - 19:05 #5
hehe og jeg tjekker ikke om de er tomme :P
Avatar billede mcardle Nybegynder
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.
Avatar billede mcardle Nybegynder
13. november 2006 - 19:09 #7
Så det godt... ;-)
Avatar billede zynzz Praktikant
13. november 2006 - 19:41 #8
Det tjekker den også nu... ved ahv eksempel... :)
Avatar billede mcardle Nybegynder
13. november 2006 - 19:53 #9
Der kommer ikke nogen error
Avatar billede ahv Nybegynder
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 />";
?>
Avatar billede mcardle Nybegynder
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>
Avatar billede mcardle Nybegynder
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
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester