Autor Zpráva
gygabyte
Profil *
Mám problém skoušel jsem si vytvořit registraci a přihlášní uživatelů
tady je kód přihlášení :
<?php session_start(); ?>
<?php include "funkce.php"; ?>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<link rel="stylesheet" href="css.css" type="text/css">
<title>DISTURBED!</title>
</head>
<body>
<?php
$login = $_POST['login'];
$nick = $_POST['nick'];
$heslo = $_POST['heslo'];
$heslo = md5($heslo);
if(isset($login)) {
 db_connect();
 $sql = "SELECT nick FROM users WHERE nick='$nick' and heslo='$heslo'";
 $vysledek = mysql_query($sql);
 $pocet = mysql_num_rows($vysledek);
  if($pocet == 1) {
   $login = "ok";
   session_register("login");
   }
   else
    echo "Špatný jméno nebo heslo";
}
?>
<div class="login">
<form action="<?php echo "$PHP_SELF"; ?>" method="post">
Nick <input type="text" name="nick"><br>
Heslo <input type="password" name="heslo"><br>
<input type="submit" value="LOGIN" name="login">
</form>
<h4><a href="registrace.php">Registrace</a></h4>
</div>
<?php
$s = $_SESSION[login];
echo "přihlášení je $s";
?>
</body>
</html>


a registrace:
<?php session_start(); ?>
<?php include "funkce.php"; ?>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<link rel="stylesheet" href="css.css" type="text/css">
<title>DISTURBED!</title>
</head>
<body>
<?php
$reg = $_POST['reg'];
$nick = $_POST['nick'];
$heslo = $_POST['heslo'];
$heslo2 = $_POST['heslo2'];
if(isset($reg)) {
 if($heslo == $heslo2) {
 db_connect();
 $sql = "SELECT nick FROM users WHERE nick='$nick'";
 $vysledek = mysql_query($sql);
 $pocet = mysql_num_rows($vysledek);
  if($pocet != 1) {
      db_connect();
    $heslo = md5($heslo);
   $dotaz = "INSERT INTO users (nick, heslo) VALUES ('$nick', '$heslo')";
   $res = mysql_query($dotaz);
    if($res)
     echo "Registrace byla úspěšná nyní se můžete <a href='index.php'>přihlásit</a>";
   }
   else
    echo "Jméno už je obsazeno";
}
}
?>
<div class="login">
<form action="<?php echo "$PHP_SELF"; ?>" method="post">
Nick <input type="text" name="nick"><br>
Heslo <input type="password" name="heslo"><br>
Heslo podruhé <input type="password" name="heslo2"><br>
<input type="submit" value="Zaregistrovat" name="reg">
</form>
<h4><a href="index.php">Index</a></h4>
</div>
<?php
$s = $_SESSION[login];
echo "přihlášení je $s";
?>
</body>
</html>


a problém mám že když se přihlásím pak jdu na registraci tak jsem pořád přihlášen, ale když se pak zase vrátím zpět na index tak už nejsem.
Kde je chyba?
Watchick
Profil
$_SESSION['login']
gygabyte
Profil *
To mi nepomohlo, viz. odkaz
login i heslo je test, nebo se můžete regnout. Jak chcete.
Nějaký jiný nápad?
Mastodont
Profil
session_register("login");
....
$s = $_SESSION[login];


If you are using $_SESSION, do not use session_register(), session_is_registered(), and session_unregister().
http://cz2.php.net/manual/en/function.session-register.php
Mícháš něco, co se míchat nemá.
AM_
Profil
$login = $_POST['login'];
$nick = $_POST['nick'];
$heslo = $_POST['heslo'];
$heslo = md5($heslo);
if(isset($login)) {

Tautologie. Tady bude isset($login) vždycky, vždyť ho o 4 řádky nadřím nastavuješ. lepší by bylo spíš if isset($_POST['login']) ještě dřív, než s tím vším pracuješ.

Jinak session_register je pravěk, s polem _SESSION pracuj jako s proměnnou, takže $_SESSION['klic']='nova hodnota';
gygabyte
Profil *
Dobrá, to funguje, ale jak se teď odhlásit když nemůžu použít session_unregister?
AM_
Profil
unset
Werewolf
Profil
AM_
if isset($_POST['login'])
To spíš if(!empty($login))...
AM_
Profil
Werewolf
nejlépe před to celé if (!empty($_POST['login'])) :)
Tak se totiž vyvaruje tří notice , že POST nemá daný index. Ale máš pravdu, že konstrukt empty je vhodnější.

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: