Forum » Izdelava spletišč » PHP cookie problem
PHP cookie problem
ROK1a ::
Lotil sem se pisanja enostavnega login sistema. Algoritem: V primeru, da obstaja cookie prikaži vsebino sicer zaporosi za geslo, ter ustavi cookie.
Problem je v tem, da ko vpišem geslo mi izpiše:
Uspesno prijavljeni. Zacnite tukaj.
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\webpage\index.php:21) in C:\AppServ\www\webpage\admin.php on line 21
Moral bi se ustvariti cookie. Poizkusil sem napisati <? setcookie ("geslo", $_POST['geslo'], time()+604800); ?> v drug file in ko sem ga zagnal je nastal cookie. V čem je težava v spodnjem primeru?
<?
include('admin/login.php');
if(isset($_COOKIE['geslo']))
{
$_SESSION['geslo'] = $_COOKIE['geslo'];
// skrita vsebina
echo "Prijavljen.";
}
else
{
echo('
<form name="login" method="post" action="index.php?page=admin&act=login">
geslo: <input type="password" name="geslo" size="25">
<input type="submit" name="submit" value="vstopi"></form>
');
}
if(($act=="login") && $_POST['geslo'] == "rok")
{
echo ('Uspesno prijavljeni. Zacnite <a href="index.php?page=admin">tukaj.</a>');
setcookie ("geslo", $_POST['geslo'], time()+604800);
}
?>
Problem je v tem, da ko vpišem geslo mi izpiše:
Uspesno prijavljeni. Zacnite tukaj.
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\webpage\index.php:21) in C:\AppServ\www\webpage\admin.php on line 21
Moral bi se ustvariti cookie. Poizkusil sem napisati <? setcookie ("geslo", $_POST['geslo'], time()+604800); ?> v drug file in ko sem ga zagnal je nastal cookie. V čem je težava v spodnjem primeru?
<?
include('admin/login.php');
if(isset($_COOKIE['geslo']))
{
$_SESSION['geslo'] = $_COOKIE['geslo'];
// skrita vsebina
echo "Prijavljen.";
}
else
{
echo('
<form name="login" method="post" action="index.php?page=admin&act=login">
geslo: <input type="password" name="geslo" size="25">
<input type="submit" name="submit" value="vstopi"></form>
');
}
if(($act=="login") && $_POST['geslo'] == "rok")
{
echo ('Uspesno prijavljeni. Zacnite <a href="index.php?page=admin">tukaj.</a>');
setcookie ("geslo", $_POST['geslo'], time()+604800);
}
?>
- spremenil: ROK1a ()
ROK1a ::
Če sem te prav razumel naj pred include delam z cookie-ji ?
Brez includa:
<?
$act = $_GET['act'];
if(isset($_COOKIE['geslo']))
{
$_SESSION['geslo'] = $_COOKIE['geslo'];
echo "a";
}
else
{
echo('
<form name="login" method="post" action="index.php?page=admin&act=login">
geslo: <input type="password" name="geslo" size="25">
<input type="submit" name="submit" value="vstopi"></form>
');
}
if(($act=="login") && $_POST['geslo'] == "rok")
{
$geslo = $_POST['geslo'];
echo ('Uspesno prijavljeni. Zacnite <a href="index.php?page=admin">tukaj.</a>');
setcookie ("geslo", $_POST['geslo'], time()+604800);
}
?>
Ista težava
Brez includa:
<?
$act = $_GET['act'];
if(isset($_COOKIE['geslo']))
{
$_SESSION['geslo'] = $_COOKIE['geslo'];
echo "a";
}
else
{
echo('
<form name="login" method="post" action="index.php?page=admin&act=login">
geslo: <input type="password" name="geslo" size="25">
<input type="submit" name="submit" value="vstopi"></form>
');
}
if(($act=="login") && $_POST['geslo'] == "rok")
{
$geslo = $_POST['geslo'];
echo ('Uspesno prijavljeni. Zacnite <a href="index.php?page=admin">tukaj.</a>');
setcookie ("geslo", $_POST['geslo'], time()+604800);
}
?>
Ista težava
Ziga Dolhar ::
Ko bi vsaj poskusil poguglat tale zelo zelo znan "Cannot modify header information - headers already sent by (output started at ... on line ..." error, bemomast!
Headerje moraš pošiljat PRED kakršnokoli [prikazno] vsebino.
Narobe:
echo ('Uspesno prijavljeni. Zacnite tukaj.');
setcookie ("geslo", $_POST['geslo'], time()+604800);
Bolje:
setcookie ("geslo", $_POST['geslo'], time()+604800);
echo ('Uspesno prijavljeni. Zacnite tukaj.');
Če imaš pred tem kakšen "echo" oz. drug izpis vsebine, zadostuje že "presledek", ga skenslaj.
Headerje moraš pošiljat PRED kakršnokoli [prikazno] vsebino.
Narobe:
echo ('Uspesno prijavljeni. Zacnite tukaj.');
setcookie ("geslo", $_POST['geslo'], time()+604800);
Bolje:
setcookie ("geslo", $_POST['geslo'], time()+604800);
echo ('Uspesno prijavljeni. Zacnite tukaj.');
Če imaš pred tem kakšen "echo" oz. drug izpis vsebine, zadostuje že "presledek", ga skenslaj.
https://dolhar.si/
mavricek ::
Problem boš rešil tako, da boš v php.ini nastavil output_buffering na neko številko npr = 10000;
Lp
Lp
DC- ::
mavricek boš problem "rešil".
Naredi tako kot je rekle Ziga. Vedno manipuliraj cookije pred kakšno koli vsebino.
Naredi tako kot je rekle Ziga. Vedno manipuliraj cookije pred kakšno koli vsebino.
krho ::
Pa popravi <? v <?php
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Raziskava o ranljivosti spletnih strani z SQL bazami podatkovOddelek: Novice / Varnost | 4942 (4278) | sverde21 |
» | problem z phpjemOddelek: Izdelava spletišč | 4271 (3684) | snow |
» | unset cookieOddelek: Izdelava spletišč | 1868 (1675) | tomitza |
» | sessionsOddelek: Izdelava spletišč | 1496 (1358) | multiplayer |
» | php začetnikOddelek: Izdelava spletišč | 977 (884) | bradek |