Autor Zpráva
Danno18
Profil *
Dobrý den,

měl bych jeden dotaz. Mám rubriku nastavení účtu a zde se mění heslo pro vstup do portálu. Bohužel jsem ale nyní přišel na to, že i když zadávám správné údaje pro změnu tak mi to vypíše chybu, že zadávám údaje špatné. Nevíte co stím?

<?php include ("include2.php"); ?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="generator" content="PSPad editor, www.pspad.com">

   <script src="./js/jquery.js"></script>
   <script src="./js/scripts.js"></script>

  <title>Nastavení účtu</title> 
  
  </head>
  <body style="background-size:100% 100%; background-image:url(./pozadi.jpg); background-repeat:no-repeat; background-attachment: fixed;">

<div id="obalovaci">

     <div id="gif"></div>
<div id="bile_pozadi">

  

<div class="ContentText">
 <br>
<br>
<center><font color="black" size="3">» V níže uvedeném formuláři můžete změnit své přístupové heslo.
<br>
» To provedete tak, že jednoduše vyplníte formulář a kliknete na tlačítko změnit.
<br>
» Automaticky proběhne změna hesla a při dalším přihlášení budete zadávat toto nové přístupové heslo.</font></center>
<br>
<br>

 <?php
if (isset($_POST["action"]) and $_POST["action"]=="send") {
 send();
} else {
 change();
}
 
 
//switch ($action){
//case "send":
//send();
//break;
//default:
//change();
//break;
//}
 
function change(){
?>
 
 
 
    <tr><td width="466" height="200" align="middle" valign="top">
        <form method="post" name="chgform" action="nastaveni_uctu.php">
                          <input type="hidden" name="action" value="send" />
        <center><table background="./200_400.png" border="0" cellpadding="0" cellspacing="0" width="220" style="border-radius:30px">
                </td></tr>
 
                <tr><td width="50%"><center><b><font color="white">Přihlašovací jméno</font></b></td> </tr>
    <tr><td><center><input name="prihlasovaci_jmeno" type="text"></td></tr>
    <tr><td colspan="2"><center><b><font color="white">Email</font></b></td></tr>
    <tr><td colspan="2"><center><input name="email" type="text"></td></tr>
    <tr><td colspan="2"><center><b><font color="white">Staré heslo</font></b></td></tr>
    <tr><td colspan="2"><center><input name="stare_heslo" type="password"></td></tr>
    <tr><td colspan="2"><center><b><font color="white">Nové heslo</font></b></td></tr>
    <tr><td colspan="2"><center><input name="nove_heslo" type="password"></td></tr>
    <tr><td colspan="2"><center><b><font color="white">Potvrzení nového hesla</font></b></td></tr>
    <tr><td colspan="2"><center><input name="potvrzeni_noveho_hesla" type="password"></td></tr>
    <tr><td colspan="2" align="center"><input type="submit" class="button" value="Změnit"></tr>
</table></center>
 
<?php
}
function send(){
$prihlasovaci_jmeno=$_POST["prihlasovaci_jmeno"];
$email=$_POST["email"];
$stare_heslo=$_POST["stare_heslo"];
$nove_heslo=$_POST["nove_heslo"];
$potvrzeni_noveho_hesla=$_POST["potvrzeni_noveho_hesla"];
if (strlen($prihlasovaci_jmeno) < 1 || strlen($email) < 1 || strlen($stare_heslo) < 1 || strlen($nove_heslo) < 1 || strlen($potvrzeni_noveho_hesla) < 1) {
    echo "<center>Údaje nejsou správně uvedené, prosím zkontrolujte je! <a href=\"javascript:history.back();\">Zpět</a></center><br><br><br><br><br><br><br><br><br><br><br>";
}elseif($nove_heslo != $potvrzeni_noveho_hesla){
    echo "<center>Nové heslo se neshoduje s potvrzením nového hesla! <a href=\"javascript:history.back();\">Zpět</a></center><br><br><br><br><br><br><br><br><br><br><br>";
}else{
    require_once("config2.php");
    mysql_select_db("d63561_db2");
    $exec="select prihlasovaci_jmeno from uzivatele where prihlasovaci_jmeno = '$_POST[prihlasovaci_jmeno]' and prihlasovaci_heslo = md5('$_POST[stare_heslo]') and email = '$_POST[email]'";
    $result=mysql_query($exec);
    $rs=mysql_fetch_object($result);
    if($rs){
        $exec="update uzivatele set prihlasovaci_heslo=md5('$nove_heslo') where prihlasovaci_jmeno='$_POST[prihlasovaci_jmeno]'";
        mysql_query($exec);
        //echo $exec;
        //echo mysql_error();
        echo "<center>Heslo bylo úspěšně změneno! <a href=\"hlavni_strana.php\">Zpět na hlavní stranu</a></center><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>";exit;
    }else{
        echo "<center>Přihlašovací jméno, přihlašovací heslo nebo email jste špatně zadali! <a href=\"javascript:history.back();\">Zpět</a></center><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>";exit;
    }
}
}
?> 

</div>

</div> 

<div id="dolni_pasek"></div>  

<div id="horni_pasek"></div>

<div id="login"><?php include ("includeOkna2.php"); ?></div> 

 <div id="tabulka_menu">

<table width="210" height="250" background="./tabulka_2.png" align="center" border="0" style="border-radius:14px; margin-top: 0px; margin-right:0%; margin-left:0px; ">
 
<tr><td height="130"></td></tr>
 
<tr><td align="center" background="./menu.png"><a href="./hlavni_strana.php"><b><font color="black">Hlavní strana</font></b></a></td></tr>
<tr><td align="center" background="./menu.png"><a href="./registrace.php"><b><font color="black">Registrace</font></b></a></td></tr>
<tr><td align="center" background="./menu.png"><a href="./obchodni_podminky.php"><b><font color="black">Obchodní podmínky</font></b></a></td></tr>
<tr><td align="center" background="./menu.png"><a href="./clenstvi.php"><b><font color="black">Členství</font></b></a></td></tr>
<tr><td align="center" background="./menu.png"><a href="./kontakt.php"><b><font color="black">Kontakt</font></b></a></td></tr>

<tr><td></td></tr>
<tr><td></td></tr>
 
</table>

</div>

</div>

  </body>
</html>
okolojsoucí
Profil
Nevkládejte celý zdrojový kód, nýbrž 2 - 3 řádky před chybou a po chybě. Tzn. pokud chyba je na řádku 160 vložíte od 158 - 162. A nezapomeňte označit tu část kódu kde Vám to hlásí chybu. Projíždět 139 řádků se mi nechce.
Napište také co má to dělat, a co to dělá a co to nedělá vč. chybových hlášek.

Všiml jsem si že využíváte mysql_*. V následujících verzí již má se zrušit a tím bude nefunkční. Doporučuji využít nadstavbu od Davida Grudla dibi (blog). Dibi Vám sama zajistí i bezpečnost dat neboli eskejpování.
Takže Vám uvedu příklad Všeho dotazu a Dibi dotazu:
// Vaše
$exec = "select prihlasovaci_jmeno from uzivatele where prihlasovaci_jmeno = '$_POST[prihlasovaci_jmeno]' and prihlasovaci_heslo = md5('$_POST[stare_heslo]') and email = '$_POST[email]";

// Dibi
$exec = dibi::query("SELECT [prihlasovaci_jmeno] FROM [uzivatele] WHERE ", array(
  'prihlasovaci_jmeno' => $_POST['prihlasovaci_jmeno'],
  'prihlasovaci_heslo' => md5('$_POST[stare_heslo]'),
  'email' => $_POST['email']
));

Osobně myslím že vrstva dibi je přehlednější a bezpečnější.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: