21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
ChumLukas
Profil
Zdravím,
chtěl bych se zeptat, vůbec jsem nepobral jak fungují loginy, potřeboval bych vytvořit asi 5 uživatelských účtů, aby se na ně ti, kteří mají své účty mohli připojit, ale aby nešli vytvořit jiné účty, jen těch přibližně pět, které si sám vytvořím. Prosím, napište sem nějaký návod, popřípadě nějaký odkaz kde je to napsáno pro málo chápající lidi (myslím sebe) , díky.
c2ga3h
Profil *
Příště zkus napsat dotaz trochu srozumitelněji.

Myslím, že hledaš něco jako - http://pecan.cz/index.php?kat_c=php-school
SwimX
Profil
ChumLukas:
V databázi si vytvoř tabulku uzivatele a v ni sloupce id, jmeno, prijmeni, prezdivka, heslo. (použij například PHPmyADMINa)
a v php potom napíšeš jednoduchý skript:

<form method=post>
<input name='nick'><input name='pass' type='password'>
<button type=submit>OK</button>
<?php
session_start();

  if(!empty($_POST['nick']) && !empty($_POST['pass'])){
    $result = mysql_query("SELECT id, CONCAT(jmeno,' ',prijmeni)  FROM uzivatele WHERE nick = '{$_POST['nick']}' and heslo = md5('{$_POST['pass']}')");
    if(mysql_num_rows($result)){
      $row = mysql_fetch_row($result);
      $_SESSION['id'] = $row[0];
      $_SESSION['name'] = $row[1];
    }else echo 'Spatne zadano';

  } else echo 'Nevyplněno';
?>


a na všechny stránky, kam se smí dostat jen přihlášení vložíš na začátek:
<?php
if(!$_SESSION['id']){
  echo "Nedostatecna prava";
  exit;
}
?>



+ samozřejmě náká obrana proti sql injection
+ md5 už není nejdokonalejší hashovací možnost jsou i jiné, lepší, je to na tobě.
+ něco tuším, máme i zde ve FAQu
ChumLukas
Profil
OK, vytvořil jsem si databázi a na web jsem si dal to přihlášení a když se přihlásím tak bych tak potřeboval mít nějakou položku, jak mám zapsat do toho **.html aby to rozpoznalo nějak to, že jsem se přihlásil a dalo mi to tam tu nabídku? A políčko odhlášení? Dík.
SwimX
Profil
ChumLukas:
nečekej, že ti to tu někdo udělá :)
když se přilhášíš tak ti to do SESSIONy uloží tvé ID.
Stačí pak tedy testovat tuto SESSIONu, když tam nějaké ID je > jsi přihlášen, jinak ne. A to je celé.
ChumLukas
Profil
Já, ale právě nevím tom kódu kde mám co napsat a kde to jen opsat víš :-D, s tím bys mi nepomohl?
baklazan
Profil *
Ak je tych mien(ludi) naozaj iba 5, preco by sme si to komplikovat s databazou. Nebolo by uspornejsie na cas aj priestor rovno zapisat tych par udajov do nejakeho pola?
ChumLukas
Profil
No, to by bylo dobré, ale nevím jak, to je ten problém :-(
SwimX
Profil
<?php session_start(); ?>
<html>
...
<body>
<?php
  if(!$_SESSION['login']){
    if(!$_POST){
      echo "<form method=post><input name=jmeno><input type=password name=pass><input type=submit value=ok>";
    }
    else{
      if(
        ($_POST['jmeno'] == 'jmeno1' && $_POST['pass']=='heslo1') ||
        ($_POST['jmeno'] == 'jmeno1' && $_POST['pass']=='heslo1') ||
        ($_POST['jmeno'] == 'jmeno1' && $_POST['pass']=='heslo1') ||
        ($_POST['jmeno'] == 'jmeno1' && $_POST['pass']=='heslo1') ||
      ) {
        $_SESSION['login'] = true;
      }
    }
  }
  else {
    echo "HTML ktere se zobrazi prihlasenym";
    echo "napriklad <a href='?akce=odhlasit'>Odhlasit</a>"; // pak je treba nekde tady odchytavat $_GET akce a když bude odhlasit tak do SESSIONy login uložit false 
  
  }
?>
</body>
</html?

je to sice takový naprd (po přihlášení se mu jakoby nic nestane dokud nedá F5 atd, ale ty už si to vyladíš :)
ChumLukas
Profil
jj, díky toto už si asi fakt vyhladím sám, díky :-)
Lamicz
Profil
No, asi bych udelal asociativni pole ve stylu 'login'=>'heslo', pak
array_key_exists($_POST['login']) a if($pole[$_POST['login']] == $_POST['heslo'])

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:

0