Autor Zpráva
kotrba
Profil *
Ahoj mam tento script pro prihlaseni uzivatele:
<?php
setcookie('txtjmeno', '', time());
setcookie('txtheslo', '', time());

  include "config.php"; // zde je include souboru s konstantami
  mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD);
  mysql_select_db(SQL_DBNAME);
  $sql = "SELECT admin_heslo FROM login WHERE admin_jmeno='{$_REQUEST['txtjmeno']}'";
  $vysledek = mysql_query($sql);
  if (!$vysledek):
    echo "overeni nelze pouzit";
    exit;
    endif;
  if (!mysql_num_rows($vysledek)):
      echo "uzivatel nenalezen";
      exit;
      else:
      if (mysql_result($vysledek, "admin_heslo") != $_REQUEST['txtheslo']):
      echo "nespravne heslo";
      else:
        setcookie('txtjmeno'. $_REQUEST['txtjmeno'], time()+3600);
        setcookie('txtheslo'. $_REQUEST['txtheslo'], time()+3600);
      endif;
      endif;

?>

1: Kdyz vyplnim admin jmeno spatne tak me to nepusti dal coz je v poradku, ale jakmile ho vyplnim dobre, tak uz nemusim vyplnovat heslo, a nebo ho staci vyplnit spatne a stejne me to pusti dal. Nevite kde je chyba?
2: A dal bych potreboval poradit jak to osetrit proti sql_injection
Dekuji
Kalby
Profil
Dopln sql dotaz :

$sql = "SELECT admin_heslo FROM login WHERE admin_jmeno='{$_REQUEST['txtjmeno']}' AND admin_heslo='{$_REQUEST['txtheslo']}'";


admin_heslo zmen podle nazvu sloupce v databazi
kotrba
Profil *
<?php


 session_start();
      $jmeno = $_POST["txtjmeno"];
      $heslo = $_POST["txtheslo"];

      if (empty($jmeno) || empty($heslo)) {
        echo("Nezadali jste jmeno nebo heslo");
        Header("Location: index.php");
            }
      else {
        include ("config.php");
        $connect = mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD); 
        
        mysql_select_db(SQL_DBNAME);
        $zaznam = mysql_query("SELECT admin_jmeno FROM login WHERE admin_jmeno = '" . $jmeno . "' AND admin_heslo = '" . $heslo . "'",
                               mysql_real_escape_string($jmeno),
                               mysql_real_escape_string($heslo));
        
        $radku = mysql_num_rows($zaznam);
        
        
        
        if ($radku == 1) 
             {

             echo('přihlášení úspěšné'); 
            $_SESSION['prihlaseny'] = "1";
            Header("Location: admin.php");

             
            }
        else {
        Header("Location: index.php");
        echo("Neplatne prihlasovaci udaje");
        
           
        }
        mysql_close($connect);
        }
    ?>

Predelal jsem takto script na prihlaseni a zkusil jsem ho osetrit proti sql_injection ale asi tam mam nekde chybu, protoze ted se mi nepodari prihlasit.
Zamenil jsem radek:
$zaznam = mysql_query("SELECT admin_jmeno FROM login WHERE admin_jmeno = '" . $jmeno . "' AND admin_heslo = '" . $heslo . "'");

Timto:
$zaznam = mysql_query("SELECT admin_jmeno FROM login WHERE admin_jmeno = '" . $jmeno . "' AND admin_heslo = '" . $heslo . "'",
                               mysql_real_escape_string($jmeno),
                               mysql_real_escape_string($heslo));

A ted mi to nic nedela mam to osetreni spravne a nebo co mam spatne?
Diky
kotrba
Profil *
Mohl by mi prosi nekdo poradit jak to osetrit?

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: