HELP ME!

cafte... potreboval by som pomoct ... tento prikaz "SELECT id, meno FROM registracia WHERE nick='$nick' AND heslo=PASSWORD('$heslo')";
mi nevracia ziadnu hodnotu... ale ked to zmenim napriklad takto "SELECT id, meno FROM registracia WHERE nick='$nick' AND meno='$meno'"; tak to uz ide... problem bude niekde v tom hesle... neviete co s tým moze byt?
šmarja. tak zaprvé. "SELECT" bych nepovažoval za příkaz (v php, pač je to sql příkaz). nebylo by marný napsat celej kód. třeba mysql_fetch_array(mysql_query(...
ale tady je to jedno. jen že ty informace jsou takový neurčitý.

takže k problému:

co je PASSWORD('heslo') ? - nech si to vypsat.
popř bych zkusil
' ". PASSWORD('$heslo') ." '
<?php # Výpis kódu 7.1 - login.php

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']);
}

if ($nick && $heslo) {

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

if ($riadok) {

session_start();
$_SESSION['meno'] = $riadok[1];
$_SESSION['id_uzivatela'] = $riadok[0];
header ("Location: http://www.reppo.sk/prihlaseny.php");
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>';
}
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset><legend>zadajte požadované údaje do tohto formulára:</legend>

<p><b>Nick:</b> <input type="text" name="nick" size="10" maxlenght="20" value="<?php if (isset($_POST['nick'])) echo $_POST['nick']; ?>" /></p>
<p><b>Heslo:</b> <input type="password" name="heslo" size="20" maxlength="20" /> </p>
<div align="center"><input type="submit" name="odoslat" value="Prihlásiť" /></div></form>

<?php
include ('sablony/bottom.inc');
?>
pak zkus
1) napsat:
AND heslo= '". PASSWORD('$heslo') ."'";

2) vyechovat si PASSWORD('$heslo') ->
kua stale to nejde... ale na inom serveri mi to ide... neviem cim to moze byt ... kamos mi povedal ze to nemam heslovat ako PASSWORD() ale ako md5() ...ale tuto funkciu neviem vobec pouzivat... ak niekto viete ako sa pouziva tak napise pls
md5("cokoliv") ti vyhodí nějakých 32 (myslím) znaků dlouhý řetězec, ten uložíš normálně do databáze a pak při přihlašování kontroluješ, jestli md5($heslo) je stejný jako to, co máš uložené.
ano, já jsem toho názoru, že md5 je vpho. :) na builderu se našli lidi, kteří tvrdí, že je nedostačující, a že to chce něco jako crypt() ale o tom už nic moc nevym.. =/

2 Krab:
>32 (myslím)
- myslíš správně :)
Tak za prvé bych session_start(); dal uplně na začátek stránky.
<?php
session_start();
za druhé
$prikaz ="SELECT * FROM registracia WHERE nick='$nick' AND heslo=$heslo";
bych udělal takhle, teda za předpokladu že tabulka ragistracia obsahuje pole ktaré se jmenují nick a heslo.
zmenil osm to takto:
<?php # Výpis kódu 7.1 - login.php
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 id, meno 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");

$_SESSION['meno'] = $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>';
}
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset><legend>zadajte požadované údaje do tohto formulára:</legend>

<p><b>Nick:</b> <input type="text" name="nick" size="10" maxlenght="20" value="<?php if (isset($_POST['nick'])) echo $_POST['nick']; ?>" /></p>
<p><b>Heslo:</b> <input type="password" name="heslo" size="20" maxlength="20" /> </p>
<div align="center"><input type="submit" name="odoslat" value="Prihlásiť" /></div></form>

<?php
include ('sablony/bottom.inc');
?>
----------------------------------------------------------------------------------------
a vypisuje toto:
Warning: Cannot modify header information - headers already sent by (output started at /domains1/nh402300/public/www_root/mysql_spojit.php:19) in /domains1/nh402300/public/www_root/prihlasenie.php on line 44
co je line 44?
musis zaridit, aby v mysql_spojit.php (radek 19) nebyl zadnej vystup - jinak se odeslou hlavicky a pri Header() to vypise tuhle chybu.
taky jsem to tak pochopil.
Predpokladam, ze mas tu samu knihu ako ja (s PHP a mysql, uz jen to # Vypis kodu me presvedcil)
TO PASSWORD('$heslo') je primo do MySQL query, takze zadny uvozovky pred tim... (afaik)
ako mam zaiadit aby v mysql_spojit.php nebol ziadny vystup :D:DD:
w8, musim se zajit podivat do knihy, co tam je :D:D:D:D
no, v knizce neni nic navic(vypis kodu 6.4 - mysql_spojit.php)
Odmaz radek po ?>
stale mi pise ze uz bola odoslana hlavicka... kurna ako to mam spravit?
kamos mi pisal nieco o ob_start() a ob_end_flush ...ako nato?
1) v tom mysql_spojit.php nesmi byt zadne echo ani nic takoveho, pred <?php nesmi byt zadne prazdne radky a za ?> taky ne...
no prihlasenie som uz takmer vyriesil... ale vyskytol sa dalsi problem.... mam nastavene v menu ze ked som prihlaseny tak sa prihlasit zmeni na odhlasit... ked sa prihlasim tak to funguje... ale ked kliknem na nejakú inú podstránku tak je v tom menu zase prihlásiť.... to menu do stranky includujem..... mozete si to aj vyskusat na stranke www.reppo.sk ....zaregistrujte sa a ja vas potom zmazem z DB... diky za kazdu pomoc
tu je zdroják toho menu čo robí problémy:
<table width="900" border="0" align="center" bgcolor="white">
<tr>
<td bgcolor="#000000" width="150" colspan="1" height="340"><div align="center"><br/>
<table width="140" height="160" border="0">
<tr>
<td height="30" bgcolor="#000000"> <img src="/img/tlacitko-menu.bmp" width="140" height="30"></td>
</tr>
<tr>
<td height="120" bgcolor="#CC0000"><div align="center"><a href="uzivatelia.php">užívatelia</a><br/><a href="preco_reg.php">prečo sa registrovať</a><br/>xxx<br/>xxx</div></td>
</tr>
<tr>
<td height="10" bgcolor="#000000"></td>
</tr>
</table>
<table width="140" height="160" border="0">
<tr>
<td height="30" bgcolor="#000000"> <img src="/img/tlacitko-extra.bmp" width="140" height="30"></td>
</tr>
<tr>
<td height="120" bgcolor="#CC0000"><div align="center"><?php
if (isset($_SESSION['id']) AND (substr($_SERVER['PHP_SELF'], -10) != 'odhlasit.php')) {
echo '<a href="odhlasit.php">odhlásiť</a>';
} else {
echo '<a href="prihlasenie.php">prihlásiť</a>';
}
?>
<br/>
<?php
if (isset($_SESSION['id']) AND (substr($_SERVER['PHP_SELF'], -10) != 'profil.php')) {
echo '<a href="profil.php">profil</a>';
} else {
echo 'xxx';
}
?>
<br/><?php
if (isset($_SESSION['id']) AND (substr($_SERVER['PHP_SELF'], -10) != 'pridat_clanok.php')) {
echo '<a href="pridat_clanok.php">pridať článok</a>';
} else {
echo 'xxx';
}
?><br/>xxx</div></td>
</tr>
<tr>
<td height="10" bgcolor="#000000"></td>
</tr>
</table></div>
</td>
<td widht="750" colspan="3" rowspan="2">
<!-- TU ZAČÍNA HLAVNÝ OBSAH STRÁNKY -->
up