prihlasenie

takze vyskytol sa dalsi (podla mna nepochopitelny) problem :)
prihlasenie mi fungovalo bez problemov a v kode som menil iba malickosti... a zrazu nefunguje....
<?php
session_name('IDUzivatela');
ini_set("session.use_cookies", 0);
session_start();


if (isset($_POST['odoslat'])) {

require_once ('mysql_spojit.php');

function opravit_chyby ($data) {
global $dbc;
if (ini_get('magic_quotes_gpc')) {
$data = stripslashes($data);
}
return mysql_real_escape_string($data, $dbc);
}

$sprava = NULL;

if (empty($_POST['nick'])) {
$nick = FALSE;
$sprava .= '<p>Nebol zadaný nick!</p>';
} else {
$nick = opravit_chyby($_POST['nick']);
}

if (empty($_POST['heslo'])) {
$heslo = FALSE;
$sprava .= '<p>Nebolo zadané heslo!</p>';
} else {
$heslo = opravit_chyby($_POST['heslo']);
$heslo_md = md5("$heslo");
}

if ($nick && $heslo) {


$prikaz = "SELECT * FROM registracia WHERE nick='$nick' AND heslo='$heslo_md'";
$vysledok = @mysql_query ($prikaz);
$riadok = @mysql_fetch_array ($vysledok, MYSQL_NUM);

if ($riadok) {




header ("Location: http://". $_SERVER['HTTP_HOST']. dirname($_SERVER['PHP_SELF']). "prihlaseny.php?". SID);
$_SESSION['nick'] = $riadok[1];
$_SESSION['id'] = $riadok[0];
exit();

} else {
$sprava = '<p>Zadali ste zlý nick alebo heslo!</p>';
}

mysql_close();

} else {
$sprava .= '<p>Skúste to znovu!</p>';
}
}

$titul = 'Prihlásenie';
include ('sablony/head.inc');
include ('sablony/menu.inc');

if (isset($sprava)) {
echo '<font color="red">', $sprava, '</font>';
}
?>
<div align="center"><h1>Prihlásenie</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table border="0" width="150">
<tr>
<td bgcolor="#C8C8C8" width="50"><b>Nick:</b></td><td width="100" bgcolor="#000000"> <div align="center"><input type="text" name="nick" size="15" maxlenght="20" value="<?php if (isset($_POST['nick'])) echo $_POST['nick']; ?>" /></div></td></tr><tr>
<td bgcolor="#C8C8C8" width="50"><b>Heslo:</b></td><td width="100" bgcolor="#000000"> <div align="center"><input type="password" name="heslo" size="15" maxlength="20" /> </div></td></tr>
<tr>
<td bgcolor="#c8c8c8" colspan="2" width="150"><div align="center"><input type="submit" name="odoslat" value="Prihlásiť" /></div></td></tr></table></form>
</div>
<?php
include ('sablony/bottom.inc');

?>
-------------------------------------------------------------------
skript prihlasenia
-------------------------------------------------------------------
<?php
session_name('IDUzivatela');
session_start();
if (!isset($riadok['nick'])) {
$titul = 'Úspešné prihlásenie!';
include ('sablony/head.inc');
include ('sablony/menu.inc');
echo '<p><div align="center"><b>Sorry, menší výpadok, skús to neskôr!</b></div></p>';
include ('sablony/bottom.inc');

exit();
}
$titul = 'Úspešné prihlásenie!';
include ('sablony/head.inc');
include ('sablony/menu.inc');

echo "<div align=center><p><b>Úspešne prihlásený užívateľ {$_SESSION['nick']}!</b></p></div>";

include ('sablony/bottom.inc');
?>
---------------------------------------------------------------------
prihlaseny.php
----------------------------------------------------------------------
stale vyhadzuje tu vetu:Sorry, menší výpadok, skús to neskôr
-------------------ale preco kua?
1) to, že je tu ten thread 2x považujme za nehodu
2) !isset($riadok['nick']) - vždyť to tak musí být, nikde $riadok nenastavuješ

pokud si to posíláš krze GET nebo POST, tak musíš volat

$_GET['riadok']['nick']
vsak tu premennu nastavujem tu $riadok = @mysql_fetch_array ($vysledok, MYSQL_NUM);

if ($riadok) {




header ("Location: http://". $_SERVER['HTTP_HOST']. dirname($_SERVER['PHP_SELF']). "prihlaseny.php?". SID);
$_SESSION['nick'] = $riadok[1];
$_SESSION['id'] = $riadok[0]; ....... a pred tým to fungovalo bez problemov.. ako som pisal... skoro nic som tam nemenil
Reppo:
sorry, ale mas v tom hroznej bordel. Projdi si ten kod a premejslej, co to ma delat...
no vsak premyslam... ale aj tak nechapem preco to nejde ... :((((((( kuaaaaaaaaaa
nemoze byt problem v trom ze mi nemaze sessions alebo co... vsak najskor ich v adrestari tmp bolo cca5 a teraz ich je tam okolo 40 ked som kukal
session_name('IDUzivatela');
nechapu logiku zadani jako session name "IDUzivatela"...
ja zase nechapem co natom nechapes.. .vsak to je pomenovanie pre session
no tak ale přiřadím to jako

$_SESSION['IDUzivatela'] = 35678987512558;

mimochodem, používáš to před session_start();
Reppo: sorry, zrovna cumim do manualu a popletl jsem si session_name() a session_id().
1) Kazdopadne Jirka ma pravdu v tom, ze bys to session_name mel psat az za session_start, a
2) jestli to chces mit na WZ, tak na ini_set() zapomen, protoze je tu zakazana.
3) Pokud chces zjistovat magic_quotes, tak radsi pouzij fci get_magic_quotes_gpc(), misto ini_get().

Jinak... asi bude nejlepsi, kdyz zacnes s tim skriptem od zacatku, protoze alespon pro me je ten kod naprosto neprehledny. Napr. kontrola zadaneho nicku a hesla mi prijde zbytecna, atd. Mozna bych to zestrucnil takto (povolene cookies nutne, samozrejme, ze by to chtelo jeste nejak zabezpecit; pripadne chyby oprav):


<?php // login.php nebo tak nejak
session_start();
session_name('IDUzivatela');
require_once ('mysql_spojit.php');

if (isset($_POST['odoslat'])) {

$nick =& $_POST['nick'];
$heslo =& $_POST['heslo'];

$nick = mysql_real_escape_string($nick);
$heslo = md5($heslo);

$query = "SELECT * FROM registracia WHERE nick='$nick' AND heslo='$heslo' LIMIT 1";
$result = mysql_query($query);
$prihlasenie_ok = @mysql_num_rows($result); // vraci true, kdyz je nalezen odpovidajici zaznam
$riadok = @mysql_fetch_array ($vysledok, MYSQL_NUM);

if ($riadok) {
$_SESSION['nick'] = $riadok[1];
$_SESSION['id'] = $riadok[0];
header ("Location: prihlaseny.php");
exit();
} else {
$sprava = '<p>Zadali ste zlý nick alebo heslo!</p>';
}
}

$titul = 'Prihlásenie';
include ('sablony/head.inc');
include ('sablony/menu.inc');

if (isset($sprava)) echo '<font color="red">'.$sprava.'</font>';
?>
<div align="center"><h1>Prihlásenie</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table border="0" width="150">
<tr>
<td bgcolor="#C8C8C8" width="50"><b>Nick:</b></td><td width="100" bgcolor="#000000"> <div align="center"><input type="text" name="nick" size="15" maxlenght="20" value="<?php if (isset($_POST['nick'])) echo $_POST['nick']; ?>" /></div></td></tr><tr>
<td bgcolor="#C8C8C8" width="50"><b>Heslo:</b></td><td width="100" bgcolor="#000000"> <div align="center"><input type="password" name="heslo" size="15" maxlength="20" /> </div></td>
</tr>
<tr>
<td bgcolor="#c8c8c8" colspan="2" width="150"><div align="center"><input type="submit" name="odoslat" value="Prihlásiť" /></div></td>
</tr>
</table>
</form>
</div>
<?php include ('sablony/bottom.inc'); ?>

-----------------------------------------------------------------------------------------------

<?php //prihlaseny.php
if (!isset($_SESSION['nick']) || !isset($_SESSION['id'])) die ("Nejsi prihlaseny!");
session_start();
session_name('IDUzivatela');
$titul = 'Úspešné prihlásenie!';
include ('sablony/head.inc');
include ('sablony/menu.inc');
echo "<div align=center><p><b>Úspešne prihlásený užívateľ $_SESSION[nick]!</b></p></div>";
include ('sablony/bottom.inc');
?>