« 1 2 3 »
Autor Zpráva
hladis
Profil
mohli by jste mi prosím vysvětlit, jak funguje přihlášení a napsat mi i třeba nějaký jednoduchý příklad?

docela to chápu ale ten kód je pro mě velkou neznámou. dokázali by jste mi prosím poradit?

za každou odpověď díky
srigi
Profil
spravis si v DB tabulku users:
CREATE TABLE `users` (
  `id` mediumint unsigned NOT NULL auto_increment,
  `username` varchar(20) NOT NULL,
  `password` char(40) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM;
V tabulke vytvor nejakeho usera, heslo treba zahasovat funkciou SHA1:
INSERT INTO `users` (`id`, `username`, `password`) VALUES
(NULL, 'admin', SHA1('pokus'));
No a tu je PHP kod co vykona prihlasenie a overenie voci takejto tabulke:
index.php
<?php
include("db.php"); // musi obsahovat funkciu db_connect()
session_start();

// je uzivatel prihlaseny?
if (isset($_SESSION['loged'])) {
  // ano je, zobraz chraneny obsah
  echo "Vitaj " . $_SESSION['username'];
  die();
}

else {
  // uzivatel nie je prihlaseny

  // odoslal uzivatel prihlasovaci formular?
  if (isset($_POST['submit'])) {
    // ano odoslal, over udaje

    $username = trim($_POST['username']);
    if (empty($username))
      die("prazdne policko meno");

    $password = trim($_POST['password']);
    if (empty($password))
      die("prazdne policko heslo");

    db_connect();
    $query = "SELECT * FROM `users` WHERE `username` = '$username'";
    @$result = mysql_query($query);
    if (!$result)
      die("zlyhala komunikacia s DB");

    // je uzivatel zaregistrovany?
    if ($row = mysql_fetch_assoc($result)) {
      // ano uzivatel je registrovany
      $db_passwd = $row['password'];

      // over heslo
      if (sha1($password) == $db_passwd) {
        // heslo O.K.
        $_SESSION['loged'] = "yes";
        $_SESSION['username'] = $username;
        $_SESSION['lastact'] = time();

        header('Location: index.php');
        die();
      }

      else {
        // nespravne heslo
        die("zadali ste nespravne heslo");
      }

    }
    else {
      // uzivatel nie je registrovany, odchpd prec
      die("nie ste registrovany uzivatel, pristup zakazany");
    }

  }

  else {
    // prihlasovaci formular nebol odoslany, zobraz ho

?>
<form action="index.php" method="post">
  meno: <input type="text" name="username" /><br />
  heslo: <input type="password" name="password" /><br />
  <input type="submit" name="submit" value="odoslat" />
</form>
<?php
    die();
  }  

}
?>
V podstate je to kopec vetvi IF ELSE. Premennu $_SESSION['lastact'] mozes vyuzit na automaticke odhlasenie. Kod som otestoval, funguje.
hladis
Profil
srigi

kde mám toto:
INSERT INTO `users` (`id`, `username`, `password`) VALUES
(NULL, 'admin', SHA1('pokus'));


napsat když mám databázi na ic.cz?

a když napíšu ten kód tak mi to napíše:

Parse error: syntax error, unexpected T_STRING in /home/free/clanweb.cz/m/miniking/root/www/index.php on line 3
srigi
Profil
Do PhpMyAdmin-a. To su SQL prikazy.
hladis
Profil
srigi

do db vlozene ale zkoukni tohle: Odkaz
Kajman_
Profil *
Na konci druhého řádku chybí středník.
hladis
Profil
pořád to píše chybu: Odkaz
joe
Profil
$username = trim($_POST['username']);


Data od uživatele nejsou ošetřená...
nightfish
Profil
hladis
Warning: include(db.php) [function.include]: failed to open stream: No such file or directory in /home/free/clanweb.cz/m/miniking/root/www/index.php on line 2
soubor db.php neexistuje (na což bys zřejmě došel i prostým přeložením té chybové hlášky pomocí slovníku)
joe
Profil
hladis
Warning: include(db.php)

Musíš se taky připojit k databázi. Nemáš soubor db.php. Nejdřív by sis o tom měl něco přečíst.
hladis
Profil
joe

jak je mám ošetřit?

nightfish

ok, vytvořil jsem soubor db.php a pořád nic, co by měl ten soubor obsahovat?

srigi

db_connect()
co mám napsat dál dosouboru db.php. mám Server: mysql.ic.cz - Databáze: cw_miniking

prosím poraďte mi a nový odkaz: Odkaz
srigi
Profil
db.php
<?php
function db_connect()
{
  @$link = mysql_connect('mysql.ic.cz', 'MENO', 'HESLO');
  if (!$link)
    die("zlyhalo pripojenie k DB");

  @$result = mysql_select_db('cw_miniking', $link);
  if (!$result)
    die("zlyhalo pripojenie k DB");

  return true;
}


joe >> to jednoduche (ne)osetrenie je tam naschval, kcel som co najkratsi kod - princip.
hladis
Profil
srigi

skript funguje, jak se odhlásit a jak bych udělal registraci?
grimword
Profil
odhlaseni >>zmenit(vymazat) session; registrace>>skript co bude vkladat nove zaznamy do mysql?:)
hladis
Profil
grimword

jo to mám na mysli:)
srigi
Profil
hladis
Odo mna uz kod nekci, prejav trocha samostatnosti.

edit: ten logout teda este napisem. Do prvej podmienky pridaj jeden riadok, tak aby to vypadalo takto:
// je uzivatel prihlaseny?
if (isset($_SESSION['loged'])) {
  // ano je, zobraz chraneny obsah
  echo "Vitaj " . $_SESSION['username'] ."<br>\n";
  echo "<a href=\"logout.php\">odhlasit</a>";
  die();
}


Teraz vytvor logout.php v tom istom priecinku kde je index.php:
<?php
 session_start();
 if (isset($_SESSION['loged'])) {

   // set cookie expiration time to past. Client delete such cookie
   setcookie(session_name(), "", time() - 259200, '/');

   // delete cookie record from client
   unset($_COOKIE[session_name()]);
	
   // unset all SESSION variables
   $_SESSION = array();

   // and finaly destroy this SESSION
   session_unset();
   session_destroy();

   header('Location: index.php');
   die();
 }

 else {
   die("nepovoleny pristup");
 }
hladis
Profil
poradte mi nekdo kod aspon na tu registraci prosiim
Nox
Profil
http://www.linuxsoft.cz/php/
přečti a budeš vědět
hladis
Profil
právě tam to čtu ale nemohu pochopit zápis MYSQL funkce INSERT, mohl by mi ho někdo aspoň trochu vysvětlit prosím?

mám kód:

<form action="registrace.php" method="post">
  meno: <input type="text" name="jmeno" /><br />
  heslo: <input type="password" name="heslo" /><br />
  <input type="submit" name="submit" value="odoslat" />
</form>

<?
// zde je include souboru s konstantami
mysql_connect(mysql.ic.cz, cw_miniking, miniking);
mysql_select_db(users);
mysql_query("INSERT INTO [users] (username) VALUES ($jmeno varchar 15, ...)")
mysql_query("INSERT INTO [users] (password) VALUES ($heslo varchar 15, ...)")
or die("Nelze vykonat definiční dotaz: " . mysql_error());
?>


co v něm mám blbě?
8383-9021
Profil *
<?
// zde je include souboru s konstantami
mysql_connect("mysql.ic.cz", "cw_miniking", "miniking");
mysql_select_db("users");
mysql_query("INSERT INTO `users` (username,password) VALUES ('$jmeno','$heslo')") or die(mysql_error());
?>
srigi
Profil
co v něm mám blbě?
Nazov databazy predsa nie je users. Okrem toho mas zlu syntax INSERT INTO prikazu, ale oprava uz bola predvedene vyssie.
hladis
Profil
8383-9021 a srigi

pořád mi to nejde podívejte se sami
joe
Profil
srigi
Ja vim, to bylo pro zakladatele, protože takoví jako je on, právě vezmou to co tu někdo napsal (ty) a zkopírujou. A pak se diví proč to a to...

hladis
Jak je ošetřit. Jednoduše, najdi si něco o tom, jak bezpečně vkládat data do db. Je jednoduchý zkopírovat kód, naházet ho do souboru a mít radost, že to funguje. Když něco děláš, měl bys o tom něco vědět, a to jistě nevíš jak je vidět.
8383-9021
Profil *
hladis
Skontroluj či máš dobré údaje do db.
hladis
Profil
8383-9021

podívej se sám:
8383-9021
Profil *
hladis
<?
// zde je include souboru s konstantami
mysql_connect("mysql.ic.cz", "cw_miniking", "miniking");
mysql_select_db("cw_miniking");
mysql_query("INSERT INTO `users` (username,password) VALUES ('$jmeno','$heslo')") or die(mysql_error());
?>
hladis
Profil
8383-9021

pise mi to spatne heslo a pritom ho mam dobre...
8383-9021
Profil *
hladis
Sprav si to takto, sem medzi úvodzovky si vyplň údaje do mysql:

$db_host = ""; //host
$db_user = ""; //prihlasovacie meno
$db_pass = ""; //prihlas. heslo
$db_name = ""; //nazov db


a pripajaj sa takto
mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db($db_name);
hladis
Profil
8383-9021

takže teď tam mám kód:
<form action="registrace.php" method="post">
  meno: <input type="text" name="jmeno" /><br />
  heslo: <input type="password" name="heslo" /><br />
  <input type="submit" name="submit" value="odoslat" />
</form>
<?
// zde je include souboru s konstantami

$db_host = "mysql.ic.cz"; //host
$db_user = "cw_miniking"; //prihlasovacie meno
$db_pass = "miniking"; //prihlas. heslo
$db_name = "cw_miniking"; //nazov db 


mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db($db_name);
mysql_query("INSERT INTO `users` (username,password) VALUES ('$jmeno','$heslo')") or die(mysql_error());
?>


a pořád mi to píše při loginu nesprávné heslo
8383-9021
Profil *
Pri akom logine?
Ako robíš login?
Keď sa prihlasuješ tak údaje nezapisuj ale načítavaj
SELECT * FROM `tabulka` ...
« 1 2 3 »

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0