Autor Zpráva
Michal Sebek
Profil
Proč mě vždycky můj formulář na změnu hesla místo změnění hesla hodí na index?
zmena-hesla.php:
<?php
session_start();
if($_SESSION['prihlasen']!=1){
 $index="index.php?page=home";
 header('location: $index');
 exit;
}

if($_POST['nove']!=""){
 if($_POST['nove']!=$_POST['nove2']){
  $err = "index.php?page=zmena-hesla&Alert=8";
  header('location: $err');
  exit;
 } elseif(strlen($_POST['nove'])<6){
   $err = "index.php?page=zmena-hesla&Alert=9";
   header('location: $err');
   exit;
  } else {
  require "db.php";
  $name = $_POST['jmeno'];
  $pass = md5($_POST['heslo']);
  $vysledek = MySQL_Query("SELECT * FROM `uzivatele` WHERE `jmeno` = '$name' AND `heslo` = '$pass'") or die (mysql_error());
  $zaznam = mysql_fetch_array($vysledek);
  if($zaznam['id']!=""){
   $_SESSION['id'] = $zaznam['id'];
  }
  if(md5($_POST['stare'])!=$zaznam['heslo']){
   $err = "index.php?page=zmena-hesla&Alert=10";
   header ('location: $err');
   exit;
  } else {
   $dotaz = "UPDATE uzivatele SET heslo='".md5($_POST['nove'])."' WHERE jmeno='".$_POST['login']."'";
   if(mysql_query($dotaz)){
    $err = "index.php?page=zmena-hesla&Alert=11";
    header ('location: $err');
    exit;
   } else {
    $err = "index.php?page=zmena-hesla&Alert=12";
    header ('location: $err');
    exit;
   }
  }
 }
}
?>

<form action="" method="post">
 <label for="stare">Aktuální heslo:</label>
  <input type="password" name="stare" id="stare" /><br>
 <label for="nove">Nové heslo:</label>
  <input type="password" name="nove" id="nove" /><br>
 <label for="nove2">Nové heslo znovu:</label>
  <input type="password" name="nove2" id="nove2" />
 <input type="submit" value="Změnit heslo" />
</form>
juriad
Profil
A s jakými parametry tě to přesměruje na index.php? Jaká je hodnota Alertu?
Michal Sebek
Profil
juriad:
Právě že žádná.
Marschmallow
Profil
Michal Sebek:
Hned třetí řádek:
Pokud není SESSION prihlasen jedna, tak se má pomocí hlavičky přesměrovat na index.php?page=home.
Nejdříve musíš tu SESSION prihlasen nějak vytvořit a získat.
Michal Sebek
Profil
Marschmallow:
Jenže tam je že když (SESSION prihlasen) neni jedna tak se to přesměruje na home. Podle mě to asi bude tim že to na konci přesměrovává na neexistující adresu. Já mám v .htaccess nastavené, aby se při neexistující adrese přesměrovalo na index. Teď akorát nevim kde a proč to odkazuje na neexistující soubor.


Doplňuji, přečetl jsem že když session prihlasen je 1 místo že neni.


A ta session prihlasen je už od přihlášení. A ten třetí řádek funguje, protože když nejsem přihlášen, tak to přesměruje na home, když ale jsem přihlášen, tak se načte formulář na změnu hesla


A přesměrovává se to až na konci.
Marschmallow
Profil
Michal Sebek:
Takže se Ti normálně zobrazí ten formulář na změnu hesla? A co se dál má stát a nestane se?
Michal Sebek
Profil
Marschmallow:
Normálně by se po kliknutí na Změnit heslo mělo změnit heslo v databázi. Místo toho to ale přesměrovává na neexistující adresu.
juriad
Profil
Michal Sebek:
Tak zakomentuj všechna přesměrování a napiš si před ně echa. První je přece zjistit, kam až to projde.
Michal Sebek
Profil
juriad:
Už jsem na to přišel. Jak jsem tam měl:
$err="nějaká adresa";
header('location: $err');
tak to přesměrovávalo na http://nejakaadresa/$err tak jsem dal přímo header('location: adresa');


A teď to už píše že jsem zadal špatné heslo


Mám problém. Stále to píše že zadávám špatně aktuální heslo i když píšu správné. Kód:
<?php
session_start();
if($_SESSION['prihlasen']!=1){
 $index="index.php?page=home";
 header('location: $index');
 exit;
}

if($_POST['nove']!=""){
 if($_POST['nove']!=$_POST['nove2']){
  header('location: index.php?page=zmena-hesla&Alert=8' );
  exit;
 } elseif(strlen($_POST['nove'])<6){
   header('location: index.php?page=zmena-hesla&Alert=9');
   exit;
  } else {
  require "db.php";
  $name = $_POST['jmeno'];
  $vysledek = MySQL_Query("SELECT * FROM `uzivatele` WHERE `jmeno` = '$name'") or die (mysql_error());
  $zaznam = mysql_fetch_array($vysledek);
  if($zaznam['id']!=""){
   $_SESSION['id'] = $zaznam['id'];
  }
  if(md5($_POST['stare'])!=$zaznam['heslo']){
   header ('location: index.php?page=zmena-hesla&Alert=10');
   exit;
  } else {
   $dotaz = "UPDATE uzivatele SET heslo='".md5($_POST['nove'])."' WHERE jmeno='".$_POST['login']."'";
   if(mysql_query($dotaz)){
    header ('location: index.php?page=zmena-hesla&Alert=11');
    exit;
   } else {
    header ('location: index.php?page=zmena-hesla&Alert=12 ');
    exit;
   }
  }
 }
}
?>

<form action="" method="post">
 <label for="stare">Aktuální heslo:</label>
  <input type="password" name="stare" id="stare" /><br>
 <label for="nove">Nové heslo:</label>
  <input type="password" name="nove" id="nove" /><br>
 <label for="nove2">Nové heslo znovu:</label>
  <input type="password" name="nove2" id="nove2" />
 <input type="submit" value="Změnit heslo" />
</form>
Michal Sebek
Profil
Pomozte, pls
juriad
Profil
A zkusil jsi si před 24. řádou vypsat:
echo md5($_POST['stare']), ' ', $zaznam['heslo'];
Jestli ne, zkus příště víc přemýšlet.

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: