![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 74 Pomógł: 0 Dołączył: 30.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Głowię się nad tym już dłuższy czas i nie mogę rozwiązać tego problemu. Mam skrypt z formularzem, który powinien zapisać po wysłaniu formularza cookie, lecz wyskakuje błąd. Oto kod skryptu: Cytat <?PHP if(!isset($_POST['login'])) { echo "<CENTER><form action=\"index.php\" method=\"post\"> Login: <input type=\"text\" name=\"login\" size=\"20\" style=\"border-style: groove; border-color: #FFFFFF\" /> <BR>Hasło: <input type=\"password\" name=\"haslo\" size=\"20\" style=\"border-style: groove; border-color: #FFFFFF\" /></br> <BR><BR><input type=\"submit\" value=\"Zaloguj\" style=\"border-style: groove; border-color: #FFFFFF\" /> </form></CENTER>"; } elseif ($login2 === $login & $haslo2 === $haslo) { setcookie("tomek58", $_POST[login], time() + 10 * 60); echo 'Zalogowany'; } ?> A to błąd: Cytat Warning: Cannot modify header information - headers already sent by (output started at D:\Serwer\index.php:17) in D:\Serwer\index.php on line 51 Czytałem gdzieś że cookie ma być wysłane przed wszystkimi innymi danymi, które zostają wysłane do przeglądarki, ale w ten sposób nie da się zrobić systemu logowania opartego o cookie. Chcę aby po wysłaniu formularza zapisało sie ciasteczko z nazwą wprowadzonego loginu. -------------------- Procesor: 2,4 GHz Dysk: 180 GB Ramy: 1538 MB Grafika: GeForce 256 MB |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 726 Pomógł: 129 Dołączył: 10.01.2008 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Muszi być przed wszystkim, daj sobie jakiegoś hiddena, na początku sprawdzaj czy ustawiony i wtedy ustawiaj ciacho.
-------------------- Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/ |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 74 Pomógł: 0 Dołączył: 30.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Więc dodałem hiddena:
Cytat <?PHP if(!isset($_POST['login'])) { echo "<CENTER><form action=\"index.php\" method=\"post\"> Login: <input type=\"text\" name=\"login\" size=\"20\" style=\"border-style: groove; border-color: #FFFFFF\" /> <BR>Hasło: <input type=\"password\" name=\"haslo\" size=\"20\" style=\"border-style: groove; border-color: #FFFFFF\" /></br> <BR><input type=\"hidden\" name=\"tak\" value=\"tak\" /> <BR><BR><input type=\"submit\" value=\"Zaloguj\" style=\"border-style: groove; border-color: #FFFFFF\" /> </form></CENTER>"; } elseif ($login2 === $login & $haslo2 === $haslo) { echo 'Zalogowany'; } if ($_POST['login'] != 0) { setcookie("tomek58", $_POST[login], time() + 10 * 60); } ?> I wydaje mi się że wysłało ciastko, bo nie wyskoczył błąd. Więc w czym tkwił wcześniejszy problem? ![]() -------------------- Procesor: 2,4 GHz Dysk: 180 GB Ramy: 1538 MB Grafika: GeForce 256 MB |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 726 Pomógł: 129 Dołączył: 10.01.2008 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Wyświetlałeś coś przed ustawieniem ciastka.
-------------------- Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/ |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 74 Pomógł: 0 Dołączył: 30.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jednak nadal nie działa :/ Błąd się nie pokazywał, ponieważ nie był spełniony warunek: if ($_POST['login'] != 0)
Gdy go zmieniłem na: if (0 === 0), czyli warunek był spełniony błąd znowu się pokazał. Ten post edytował Tomek58 12.10.2008, 20:15:32 -------------------- Procesor: 2,4 GHz Dysk: 180 GB Ramy: 1538 MB Grafika: GeForce 256 MB |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 726 Pomógł: 129 Dołączył: 10.01.2008 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
$_POST['login'] zamiast $_POST[login]
-------------------- Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/ |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 74 Pomógł: 0 Dołączył: 30.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
No tak, powinny być '', ale nie w tym tkwi błąd, bo jeśli zmienię tą zmienną na zwykły tekst, to także wyskakuje błąd
![]() -------------------- Procesor: 2,4 GHz Dysk: 180 GB Ramy: 1538 MB Grafika: GeForce 256 MB |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) ![]() ![]() |
Staraj się używać poprawnego kodu XHTML oraz kolorować składnię na forum, aby inni chętniej czytali twoje posty. Ponadto warto korzystać z sesji i na przykład takiego rozwiązania:
-------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 4 Pomógł: 2 Dołączył: 12.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Aby uniknąć błędu :
Cytat Warning: Cannot modify header information - headers already sent by (output started at D:\Serwer\index.php:xx) in D:\Serwer\index.php on line xx używaj funkcji php do buforowania wyjścia strony, służy do tego plecenie ob_start i ob_end_flush np: Kod <?php ob_start(); session_start(); ... twój kod np : .... require_once('class/login.class.php'); ..... echo 'Cos tam'; ob_end_flush(); ?> uważaj też jak u używasz edytora do pisania kodu php (ja korzystam z Notepad++ v5.0.3), który zapisuje pliki w kodowaniu UTF-8 ustaw sobie zapis plików wtedy na UTF-8 bez BOM ![]() Ten post edytował _VBService_ 12.10.2008, 22:04:15 -------------------- Ja sem dočasně nepřítomný! Být či nebýt? Toto je otázka!
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
@Tomek58: Zacznij używać odpowiedniego bbCode i popraw swoje posty.Zamiast używać znacznika php używasz cytatów.... Następne takie posty skończą się to ostrzeżeniem.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 74 Pomógł: 0 Dołączył: 30.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki! Opcja _VBService_ zadziałała.
PS. Ociu ok ![]() -------------------- Procesor: 2,4 GHz Dysk: 180 GB Ramy: 1538 MB Grafika: GeForce 256 MB |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.06.2025 - 09:51 |