Skocz do zawartości

Błąd przy tworzeniu cookie


Rekomendowane odpowiedzi

Co oznacza ten błąd?

Warning: Cannot modify header information - headers already sent by (output started at D:\WebServ\httpd\index.php:30) in D:\WebServ\httpd\index.php on line 13

 

13 linia:

setcookie("login","true");

 

Czemu cookie nie może być utworzone?

 

Sorki za takie nuuuuuuuuupksie pytanie ale dopiero zaczynam php ;/

Odnośnik do komentarza
Udostępnij na innych stronach

Nie można zmodyfikować nagłówka - nagłówek już został wysłany przez index.php w linii 13.

 

To raczej nie jest 13 linijka. Musisz gdzieś wysyłać nagłówek (funkcja header()). Zawsze rób to przed jakimkolwiek tekstem. Jeżeli tak robisz, to znaczy że wywalił błąd w jakiejś funkcji, przez co wyświetlił się tekst i nagłówki zostały wysłane zanim ty zdążyłeś to zrobić funkcją header. Pokaż więcej tego kodu może?

Odnośnik do komentarza
Udostępnij na innych stronach

już obeszłem się bez cookie ;)

 

ale czekajcie, zaraz dam ten kod przy którym wywalało błąd...

 

NIE ŚMIAĆ SIĘ! TO MÓJ PIERWSZY SKRYPT LOGOWANIA! I W OGOLE PIERWSZA STRONA PHP XD

 

<?php
$pass="haslo;
$emot = array(' <img src="../shylios/emoty/smile.gif">',' <img src="../shylios/emoty/happy.gif">',' <img src="../shylios/emoty/sad.gif">');
function login()
{
echo 'Podaj haslo:';
echo '<form action="index.php?do=check" method="POST">';
echo '<input type="password" name="haslo"> ';
echo '<input type="submit" value="Zaloguj">';
echo '</form>';
};
function logged()
{
echo "Zalogowales sie pomyslnie";
echo "$emot[1]<br><br>";
setcookie("login","true");
echo '<a href="pobierz.php">Wejdz na strone</a><br>';
echo '<a href="index.php?do=logout">Wyloguj sie</a>';
};
?>


<html>
<head>
<title>Proszę wprowadzić hasło...</title>
</head>
<body>
<center>


<?php
if (!$_GET)
{
if ($_POST["do"]!=$pass)
{
login();
}
}
else
if ($_GET["do"] == check)
{
switch ($_POST["haslo"])
{
case $pass:
logged();
break;
default:
echo 'Niepoprawne hasło' .$emot[2] . '<br><hr width="30%">';
login();
}
}
else
if ($_GET["do"] == logout)
{
echo 'Wylogowałes sie poprawnie' . $emot[0] . '<br><hr width="30%">';
login();
}
else
if ($_GET["do"] == relogin)
{
echo 'Teraz sie zaloguj' . $emot[1] . '<br><hr width="30%">';
login();
}
?>


</center>
</body>
</html>

Odnośnik do komentarza
Udostępnij na innych stronach

$pass="haslo;

Może dlatego, że nie zamknąłeś cudzysłowem?

 

P.S. Dla bezpieczności, nie przechowuj w cookie wartości boolean, tylko hasło, jakie trzeba wpisać, a przy automatycznym logowaniu sprawdzaj, czy hasło się zgadza.

Odnośnik do komentarza
Udostępnij na innych stronach

Hm, może tak jako materiał edukacyjny:

<?php
     error_reporting( E_ALL );

     class tmpl {
          static function header() {
return <<<XHTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
     <head>
          <meta http-equiv="content-type" content="text/html; charset=utf-8">
          <title>
               Strona Shyliosa
          </title>
     </head>
     <body>
XHTML;
          }
          
          static function footer() {
return <<<XHTML
     </body>
</html>
XHTML;
          }
          
          static function login_form( $nick = '', $pass = '' ) {
return <<<XHTML
Nie jesteś zalogowany, proszę się zalogować.
<form action="?login" method="post">
     <p>
          Nick: <input type="text" name="nick" value="{$nick}">
     </p>
     <p>
          Hasło: <input type="password" name="pass" value="{$pass}">
     </p>
     <p>
          <input type="submit" value="Zaloguj">
     </p>
</form>
XHTML;
          }
          
          static function login_error() {
return <<<XHTML
     Nick lub hasło jest nieprawidłowe.
XHTML;
          }
          
static function login_ok() {
return <<<XHTML
     Zostałeś zalogowany pomyślnie!
XHTML;
          }
          
static function login_welcome() {
     global $user_nick;
return <<<XHTML
     Witaj {$user_nick}!
XHTML;
          }
     }

     class buff {
          function __construct() {
               ob_start( array( $this, 'compress' ) );
               echo tmpl::header();
          }
          
          function __destruct() {
               tmpl::footer();
               ob_end_flush();
          }
          
          function compress( $input ) {
               return str_replace( array( chr( 10 ), chr( 13 ), "\t", '     ' ), '', $input );
          }
     }
     
     $buff = new buff;
     
     $users = array( 
          'Shylios' => '12345',
          'Tymon' => 'wpytke'
     );
     
     $user_loggedin = false;
     $user_nick = '';
     if( isset( $_GET['login'] ) ) {
          if( isset( $_POST['nick'], $_POST['pass'] ) ) {
               if( isset( $users[$_POST['nick']] ) ) {
                    if( $users[$_POST['nick']] === $_POST['pass'] ) {
                         echo tmpl::login_ok();
     
                         $user_loggedin = true;
                         $user_nick = $_POST['nick'];
                         
                         setcookie( 'nick', $_POST['nick'], time() + 86400 );
                         setcookie( 'pass', md5( $_POST['pass'] ), time() + 86400 );
                    }
                    else {
                         echo tmpl::login_error();
                    }
               }
               else {
                    echo tmpl::login_error();
               }
          }
          else {
               echo tmpl::login_error();
          }
     }
     else {
          if( isset( $_COOKIE['nick'], $_COOKIE['pass'] ) ) {
               if( isset( $users[$_COOKIE['nick']] ) ) {
                    if( md5( $users[$_COOKIE['nick']] ) == $_COOKIE['pass'] ) {
                         $user_loggedin = true;
                         $user_nick = $_COOKIE['nick'];
                    }
               }
          }
     }
     
     if( !$user_loggedin ) {
          echo tmpl::login_form();
     }
     else {
          echo tmpl::login_welcome();
     }
?>

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...