Autor Zpráva
petrsvetr
Profil
prihlaseni.php

<HTML>
<HEAD>
<TITLE>Přihlášení</TITLE>
</HEAD>
<BODY>
<FORM name="form1" method="post" action="overeni.php">
<B>Jméno:</B><INPUT type="text" name="txtjmeno" size="20"><br />
<B>Heslo:</B><INPUT type="text" name="txtheslo" size="20"><br />
<INPUT type="submit">
</FORM>
</BODY>
</HTML>


overeni.php

<?
setcookie('txtjmeno', '', time());
setcookie('txtheslo', '', time());

$spojení = mysql_connect("localhost", "mojejmeno", "mojeheslo");
mysql_select_db("test");

$sql =
"SELECT uziv_heslo FROM klienti WHERE uziv_jmeno='{$_REQUEST['txtjmeno']}'";
$výsledek = mysql_query($sql);

if (!$výsledek):
echo "Ověření nelze použít.";
exit;
endif;

if(!mysql_num_rows($výsledek)):
echo "Uživatel nenalezen.";
exit;
else:
if (mysql_result($výsledek, "uziv_heslo") != $_REQUEST['txtheslo']):
echo "Nesprávné heslo.";
exit;
else:
setcookie('txtjmeno', $_REQUEST['txtjmeno'], time()+3600);
setcookie('txtheslo', $_REQUEST['txtheslo'], time()+3600);
endif;
endif;
?>

<html>
<head>
<title>Stránka aplikace</title>
</head>
<body>
<p>Úspěšně jste se přihlásili.</p>
<!-- Obsah stránky -->
</body>
</html>


Ahojte, prosim Vas o radu. Pri behu vyse popsaneho programu pro porovnani hesla a jmeno ulozeneho v databazi se mi objevuje hlaska :
poukazuje to na radky cookies - musi se v php nejak zvlast tyto vecoi nastavovat nebo je zakopany pes jinde?



Warning: Cannot modify header information - headers already sent by (output started at C:xampphtdocsovereni.php:4) in C:xampphtdocsovereni.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at C:xampphtdocsovereni.php:4) in C:xampphtdocsovereni.php on line 6

Warning: Cannot modify header information - headers already sent by (output started at C:xampphtdocsovereni.php:4) in C:xampphtdocsovereni.php on line 28

Warning: Cannot modify header information - headers already sent by (output started at C:xampphtdocsovereni.php:4) in C:xampphtdocsovereni.php on line 29

Úsp&igrave;šn&igrave; jste se p&oslash;ihlásili.
petrsvetr
Profil
Opravdu v cookies je zakopany pes.. kdyz vlozim jen jednoduchy prikaz:

<?php
setcookie("koláček", "malinový se šlehačkou");
?>

napise mi to hlasku:
Warning: Cannot modify header information - headers already sent by (output started at C:xampphtdocs7_03.php:4) in C:xampphtdocs7_03.php on line 5

jak si s timto muzu poradit prosim?
petrsvetr
Profil
co tohle nastaveni v php ini? Ma to nejakou vahu?

; This option enables administrators to make their users invulnerable to
; attacks which involve passing session ids in URLs; defaults to 0.
; session.use_only_cookies = 1
nightfish
Profil
1) toto vlákno zcela jasně patří do tématu PHP
2) tam by sis přečetl FAQ, kde se dozvíš, co může tuto chybovou hlášku způsobovat
petrsvetr
Profil
Nightfishi, fakt nevim, nevim, nevim, nedokazu urcit jadro problemu, jestli je to nastavenim php nebo jestli je to , cituji z FAQ:

"K hodnotám zaslaným metodou POST lze přistupovat přes $_POST['nazev'], metodou GET přes $_GET['nazev']. K proměnným z cookies přes pole $_COOKIE. "


nebo to souvisi s : Ověřování pomocí WWW-Authenticate

treba tohle mi funguje:
<?
if(!isset($_COOKIE["id"])) setcookie ("id", 1);
if(!isset($_COOKIE["cas"])) setcookie ("cas", time());
if(isset($_COOKIE["stranek"])) setcookie ("stranek", ++$_COOKIE["stranek"]); else setcookie("stranek",1);

echo "<h1>Vítejte na naší stránce</h1>";
echo "<p>Vaše údaje jsou:";
echo "<BR>ID: ".$_COOKIE["id"];
echo "<BR>Čas přihlášení: ".date("j.n.Y G:i:s",$_COOKIE["cas"]);
echo "<BR>Počet navštívených stránek po přihlášení: ".$_COOKIE["stranek"];

?>

soudim tedy, ze problem neni v nastaveni php, ale je mezi klavesnici a monitorem, je to tak? Pro soude dle tohoto kodu co funguje, nefunguje ten kod viz nahore v mem prvnim prispevku? Plis o radu
nightfish
Profil
soudim tedy, ze problem neni v nastaveni php, ale je mezi klavesnici a monitorem, je to tak?
ano, je to tak
jak už jsem jednou napsal, přečti si FAQ: http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=21 11
konkrétně část nadepsanou "headers already sent..."
petrsvetr
Profil
NIGHTFISHI
stydím se za takovou věc a tobě díky za chytré navedení k tomu, že se vše nakonec vyřešilo a že už takovou chybu v tomto případě nikdy neudělám.
Pro všechny začátečníky, co jsou na tom jako já:

V případě, že užíváte podobný příklad přihlašování se na stránku pod heslem při užití databáze, dbejte na to, aby kód ve zpracuj.php použivající
příkazy ...setcookie... začínal ihned od prvního řádku v souboru. Jelikož nejsem zdatný v odborné terminologii, zde názorný příklad:


špatný začátek:
-------------
(dva řádky mezera)

<?
setcookie('txtjmeno', '', time());
setcookie('txtheslo', '', time());
....
....
...
..


správný začátek bez mezery na začátku:
--------
<?
setcookie('txtjmeno', '', time());
setcookie('txtheslo', '', time());

$spojení = mysql_connect("localhost", "mojejmeno", "mojeheslo");
mysql_select_db("test");

$sql =
"SELECT uziv_heslo FROM klienti WHERE uziv_jmeno='{$_REQUEST['txtjmeno']}'";
$výsledek = mysql_query($sql);

if (!$výsledek):
echo "Ověření nelze použít.";
exit;
endif;

if(!mysql_num_rows($výsledek)):
echo "Uživatel nenalezen.";
exit;
else:
if (mysql_result($výsledek, "uziv_heslo") != $_REQUEST['txtheslo']):
echo "Nesprávné heslo.";
exit;
else:
setcookie('txtjmeno', $_REQUEST['txtjmeno'], time()+3600);
setcookie('txtheslo', $_REQUEST['txtheslo'], time()+3600);
endif;
endif;
?>

<html>
<head>
<title>Stránka aplikace</title>
</head>
<body>
<p>Úspěšně jste se přihlásili.</p>
<!-- Obsah stránky -->
</body>
</html>



zde uvádím odbornou terminologii, na kterou mě navedl NIGHTFISH, díky které mi vše začalo fungovat adíky které se stydím za to, jaká to byla banalita...a půl dne pryč....

headers already sent...
Pokud už byl generovaný nějaký výstup, tak už nelze používat funkce header(), setcookie() ani session_start(). Jejich volání skončí chybou.
Přesvědčete se, že před začátkem <?php ?> není žádný text (ani mezera) a že nebylo nic odesláno třeba funkcemi jako echo nebo print.
Pokud je text v UTF-8, tím výstupem může být i tzv. BOM signatura, vizte výše zmíněný Divný znak (čtvereček)....


DIKY NIGHTFISHI

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0