Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Chybné zpracování registračního formuláře.

Ahoj,

mám problém s pracování registračního formuláře.
Pokud se do hesla zadávají jen číslice, tak je vše ok a heslo se zahašuje.
Pokud heslo obsahuje písmeno zapíše se heslo se kterým přistupuji do datábáze.
Takže kdokoliv se zaregistruje a použije v hesle písmeno tak se mu zapíše stejné heslo a to ještě heslo se kterým přistupuji já do db.
Nějak to nechápu.
Přikládám kod.

<?php
ob_start();               // cachujeme vystup
  if(isset($_POST['sent'])){      // pokud byl odeslan formular pokracuj timto
    $jmeno=trim($_POST['jmeno']);
    $heslo1=$_POST['heslo1'];
    $heslo2=$_POST['heslo2'];
    $mail=trim($_POST['mail']);
    $bl=$_SERVER['HTTP_REFERER'];
    if($jmeno=="" or $heslo1=="" or $mail==""){ // pokud nebylo vyplněno něco z toho, co je povinné, dáme vědět a skript ukončíme
      $backlink="index.php?page=registrace&Alert=1";
    }else{              // povinné udaje vyplněny vsechny
      require "settings.php";     // pripojime se k databazi
      $PocetStejnych=mysql_result(mysql_query("SELECT COUNT(*) FROM `uzivatele` WHERE `jmeno`='$jmeno' OR `mail`='$mail'"), 0);
	  if($PocetStejnych!=0){    // pokud v db je jiz takove jmeno nebo heslo...
        $backlink="index.php?page=registrace&Alert=2";
      }elseif($heslo1 != $heslo2){    // pokud se hesla nerovnají
        $backlink="index.php?page=registrace&Alert=3";
      }else{            // hesla se shoduji, vlozime tedy data do databaze
        $heslo=md5($heslo1);  // zahashujeme heslo

        }
        $VlozData=mysql_query("INSERT INTO uzivatele (jmeno,heslo,mail) VALUES ('$jmeno', '$heslo', '$mail')") or die (mysql_error());
        // Vlozim do tabulky hodnoty - prvni je ID - nevyplnim, tvori se samo.
        // Jako posledni hodnota je "0", to jsou ty prava uzivatele.
		
        $backlink="$bl"; // presmerovani s hlaskou ze je vse OK
      }

    
  }else{
    $backlink="index.php?page=registrace&Alert=5";
  }
// pokud pouzijete HEADER LOCATION tak by pred nim nemelo byt zadne platne ECHO
//echo "<a href='index.php'>index</a>";
// samozrejme zde muze byt presmerovani na jinou stranku pomoci
 header ("Location: $backlink");
ob_end_flush();

?>
Předmět Autor Datum
Asi jsem to vyřešil že jsem v DB použil místo varchar jen char. poslední
Gizzer 18.07.2012 23:01
Gizzer

Zpět do poradny Odpovědět na původní otázku Nahoru