brekmar
18.07.2005, 10:12:13
Mam taka funkcje
session_start();
$db = @mysql_connect( 'localhost', 'root', '' ) or die( 'Nie można połączyć z bazą!' );
@mysql_select_db( 'poleceni' ) or die( 'Nie można wybrać bazy!' );
if( !isset( $_SESSION[ 'user' ] ) )
{
if( isset( $_POST[ 'loginGo' ] ) )
{
$dane = mysql_query( 'SELECT id,
login,
imie,
nazwisko,
email
FROM users
WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
password = \"'.md5( $_POST[ 'password' ] ).'\" LIMIT 1' );
$userData = mysql_fetch_assoc( $dane );
if( $userData[ 'id' ] > 0 )
{
$_SESSION[ 'user' ] = $userData;
header( 'Location: '.$_SERVER[ 'PHP_SELF' ] );
}
else
{
echo 'Podałeś złe hasło lub login...';
}
}
else
{
?>
<form action=\"\" method=\"post\">
Login: <input type=\"text\" name=\"loginName\"/><br/>
Hasło: <input type=\"password\" name=\"password\"/><br/>
Login: <input type=\"submit\" name=\"loginGo\" value=\"Zaloguj\"/><br/>
</form>
<?php
}
}
else
{
echo 'Jesteś zalogowany!<br/>'; }
No i wyskakuje taki blad:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /webs/1/fbi.cz/p/poleceni/1.php:9) in /webs/1/fbi.cz/p/poleceni/1.php on line 11
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /webs/1/fbi.cz/p/poleceni/1.php:9) in /webs/1/fbi.cz/p/poleceni/1.php on line 11
No i co z tym teraz zrobic. Pomorzcie.
Diwi
18.07.2005, 10:14:28
wstaw na początku skryptu linijke po znaczniku <?php
Kod
ob_start();
i na końcu skryptu linkjke przed znacznikiem ?>
Kod
ob_end_flush();
Powinno nie pokazywać błędu

Pozdrawiam
brekmar
18.07.2005, 10:25:31
No zrobilem tak jak napisales i mam taki skrypt
ob_start();
session_start();
$db = @mysql_connect( 'localhost', 'root', '' ) or die( 'Nie można połączyć z bazą!' );
@mysql_select_db( 'poleceni' ) or die( 'Nie można wybrać bazy!' );
if( !isset( $_SESSION[ 'user' ] ) )
{
if( isset( $_POST[ 'loginGo' ] ) )
{
$dane = mysql_query( 'SELECT id,
login,
imie,
nazwisko,
email
FROM users
WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
password = \"'.md5( $_POST[ 'password' ] ).'\" LIMIT 1' );
$userData = mysql_fetch_assoc( $dane );
if( $userData[ 'id' ] > 0 )
{
$_SESSION[ 'user' ] = $userData;
header( 'Location: '.$_SERVER[ 'PHP_SELF' ] );
}
else
{
echo 'Podałeś złe hasło lub login...';
}
}
else
{
?>
<form action=\"\" method=\"post\">
Login: <input type=\"text\" name=\"loginName\"/><br/>
Hasło: <input type=\"password\" name=\"password\"/><br/>
Login: <input type=\"submit\" name=\"loginGo\" value=\"Zaloguj\"/><br/>
</form>
<?php
}
}
else
{
echo 'Jesteś zalogowany!<br/>'; }
No i juz tego bledu nie wyswietla, ale przed formularzem wyswietla
0 ) { $_SESSION[ 'user' ] = $userData; header( 'Location: '.$_SERVER[ 'PHP_SELF' ] ); } else { echo 'Podałeś złe hasło lub login...'; } } else { ?>
I jak wpisze jakies dane to nic sie nie dzieje nie loguje mnie. Co teraz
Diwi
18.07.2005, 10:37:57
Wrzuć na samym początku skryptu <?php
Pozdrawiam
brekmar
18.07.2005, 11:07:37
Kurde znowu ten blad sie wyswietlil z "cookies" tylko ze teraz jest blad linijke nizej bylo "on line 11" a teraz "on line 12" czyli ten ob_start(); nic nie pomogl, tylko zwolnil ladowanie sie strony.
Levabul
18.07.2005, 11:34:08
bo
należy wrzucić zaraz przed przed !DOCTYPE(a jeżeli nie masz !DOCTYPE to zaraz przed <html>)
brekmar
18.07.2005, 12:00:44
ob_start();
<html>
<head>
<title></title>
</head>
<body>
<?php
$db = @mysql_connect( 'localhost', 'root', '' ) or
die( 'Nie można połączyć z bazą!' );
if( !isset( $_SESSION[ 'user' ] ) ) {
if( isset( $_POST[ 'loginGo' ] ) ) {
login,
imie,
nazwisko,
email
FROM users
WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
password = \"'.md5( $_POST[ 'password' ] ).'\" LIMIT 1' );
if( $userData[ 'id' ] > 0 )
{
$_SESSION[ 'user' ] = $userData;
header( 'Location: '.$_SERVER[ 'PHP_SELF' ] ); }
else
{
echo 'Podałeś złe hasło lub login...'; }
}
else
{
?>
<form action=\"\" method=\"post\">
Login: <input type=\"text\" name=\"loginName\"/><br/>
Hasło: <input type=\"password\" name=\"password\"/><br/>
Login: <input type=\"submit\" name=\"loginGo\" value=\"Zaloguj\"/><br/>
</form>
<?php
}
}
else
{
echo 'Jesteś zalogowany!<br/>'; }
?>
</body>
</html>
ob_end_flush();
Napisalem to tak, dobrze czy nie, bo nie dosc ze nie dziala to jeszcze laduje sie szmat czasu.
Levabul
18.07.2005, 12:03:09
Z szacunkiem POMYŚL TROCH

! Skrypt php musi być pomiędzy <?php i ?>!!!!
<?php
?>
<html>
<head>
<title></title>
</head>
<body>
<?php
$db = @mysql_connect( 'localhost', 'root', '' ) or
die( 'Nie można połączyć z bazą!' );
if( !isset( $_SESSION[ 'user' ] ) ) {
if( isset( $_POST[ 'loginGo' ] ) ) {
login,
imie,
nazwisko,
email
FROM users
WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
password = \"'.md5( $_POST[ 'password' ] ).'\" LIMIT 1' );
if( $userData[ 'id' ] > 0 )
{
$_SESSION[ 'user' ] = $userData;
header( 'Location: '.$_SERVER[ 'PHP_SELF' ] ); }
else
{
echo 'Podałeś złe hasło lub login...'; }
}
else
{
<form action=\"\" method=\"post\">
Login: <input type=\"text\" name=\"loginName\"/><br/>
Hasło: <input type=\"password\" name=\"password\"/><br/>
Login: <input type=\"submit\" name=\"loginGo\" value=\"Zaloguj\"/><br/>
</form>
');
}
}
else
{
echo 'Jesteś zalogowany!<br/>'; }
?>
</body>
</html>
<?php
?>
brekmar
18.07.2005, 12:17:57
No w porzadku teraz juz nie pokazuje tego bledu, tylko ze wpisalem login i haslo no i zaladowala mi sie stronka z tym ze Zle haslo lub login i wyskoczyl inny blad
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /webs/1/fbi.cz/p/poleceni/1.php on line 33
O co tym razem chodzi.
Levabul
18.07.2005, 12:21:49
podmień
<?php
?>
na
<?php
?>
oczywiście bez <?php i?>
nospor
18.07.2005, 12:23:35
to nic nie da. przecież $dane jest blędne.
daj se:
<?php
login,
imie,
nazwisko,
email
FROM users
WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
?>
brekmar
18.07.2005, 13:10:02
Podlozylem te wasze poprawki i stronka mi sie juz nawet nie laduje. Ale blad chyba jest w okresleniu bazy danych. Tabela nazywa sie "logowanie" i ma pola "id", "login", "haslo". Moze to nie pasuje, sprawdzcie, bo ja nie wiem gdzie, tego skryptu nie pisalem, ja go sciaglem

.
nospor
18.07.2005, 13:26:53
Pokaż najpierw skypt po poprawkach. Z doswiadczenia wiem że 60% osób które poprawia, poprawia źle, więc jakbyś mógł rzucić poprawiony skrypt to będzie git
crash
18.07.2005, 13:37:53
Do autora wątku: podałem Ci wczoraj ten kod jako gotowca! Sprawdzonego i działajcego. Jedynym warunkiem do uruchomienia tego było ustawienie połączenia z bazą, utworzenie odpowiedniej bazy/tabeli i dodanie użytkownika... Nie wiem skąd te wszystkie pytania, błędy itp. Wszystko sprawdziłem i działa...
Levabul
18.07.2005, 16:41:51
Cytat
Podlozylem te wasze poprawki i stronka mi sie juz nawet nie laduje. Ale blad chyba jest w okresleniu bazy danych. Tabela nazywa sie "logowanie" i ma pola "id", "login", "haslo". Moze to nie pasuje, sprawdzcie, bo ja nie wiem gdzie, tego skryptu nie pisalem, ja go sciaglem

.
No jasne że to ma znaczenie

! Powinno pomóc :
<?php
?>
<html>
<head>
<title></title>
</head>
<body>
<?php
$db = @mysql_connect( 'localhost', 'root', '' ) or
die( 'Nie można połączyć z bazą!' );
if( !isset( $_SESSION[ 'user' ] ) ) {
if( isset( $_POST[ 'loginGo' ] ) ) {
login,
imie,
nazwisko,
email
FROM logowanie
WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
if( $userData[ 'id' ] > 0 )
{
$_SESSION[ 'user' ] = $userData;
header( 'Location: '.$_SERVER[ 'PHP_SELF' ] ); }
else
{
echo 'Podałeś złe hasło lub login...'; }
}
else
{
<form action=\"\" method=\"post\">
Login: <input type=\"text\" name=\"loginName\"/><br/>
Hasło: <input type=\"password\" name=\"password\"/><br/>
Login: <input type=\"submit\" name=\"loginGo\" value=\"Zaloguj\"/><br/>
</form>
');
}
}
else
{
echo 'Jesteś zalogowany!<br/>'; }
?>
</body>
</html>
<?php
?>
Zmieniłem tylko zapytanie mysql
nospor
18.07.2005, 16:45:41
Cytat
Nospor twoje zapytanie też było złe - zamiast $_POST[ 'loginNAME' ] miało być $_POST[ 'loginGo' ] CHYBA )
Po pierwsze: to nie było moje zapytanie tylko autora. ja je skopiowalem i dorobilem wyświetlanie ewentualnego błedu
Po drugie: przecież loginGo to przyscik submit a nie login użytkownika, więc co ty za bzdury piszesz?
Levabul
18.07.2005, 20:54:11
Kurde racja :/ Sorry, mój błąd. Kod poprawiony i wstawiony do mojego wcześniejszego postu.
ps. Nospor nie obrażaj się :/
Na marginesie. Lepiej używać
<?php
?>
Jest to buforowanie wyjścia wraz z kompresją danych (przynajmniej teoretycznie).
popo
18.07.2005, 22:57:22
Levabul erm tylko co przed <?php robi pusta linia ? czy to aby nie powoduje bledu ?
Levabul
19.07.2005, 07:46:25
Nie ma prawa powodować błąd :/
brekmar
20.07.2005, 18:45:19
Dzieki bardzo wszystkim, juz nie wyswietla zadnego bledu serwera, czyli skrypt jest poprawny

, ale nie pisalbym tego gdyby bylo wszystko OK

. Stronka sie szybko laduje, jak wpisuje Login i Hasło to szybko dziala, lecz nie chce mnie zalogowac, wpisuje prawidlowy login i haslo i mi wyswietla ze zle haslo lub login. Nie wiem co nie pasuje. Zreszta sami sprawdzcie
http://www.poleceni.fbi.cz/3.php - dodawanie uzytkownika
http://www.poleceni.fbi.cz/4.php - logowanie
Prosze o pomoc.
Levabul
20.07.2005, 18:52:39
Pokaż jak wygląda baza ... (jeżeli moje przypuszczenia są prawdziwe to poprawiłem kod w moim przedostatnim poście)
brekmar
20.07.2005, 19:27:47
Levabul
20.07.2005, 19:37:31
To musi działać

<?php
?>
<html>
<head>
<title></title>
</head>
<body>
<?php
$db = @mysql_connect( 'localhost', 'root', '' ) or
die( 'Nie można połączyć z bazą!' );
if( !isset( $_SESSION[ 'user' ] ) ) {
if( isset( $_POST[ 'loginGo' ] ) ) {
login,
email,
imie,
nazwisko
FROM logowanie
WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
if( $userData[ 'nr' ] > 0 )
{
$_SESSION[ 'user' ] = $userData;
header( 'Location: '.$_SERVER[ 'PHP_SELF' ] ); }
else
{
echo 'Podałeś złe hasło lub login...'; }
}
else
{
<form action=\"\" method=\"post\">
Login: <input type=\"text\" name=\"loginName\"/><br/>
Hasło: <input type=\"password\" name=\"password\"/><br/>
Login: <input type=\"submit\" name=\"loginGo\" value=\"Zaloguj\"/><br/>
</form>
');
}
}
else
{
echo 'Jesteś zalogowany!<br/>'; }
?>
</body>
</html>
<?php
?>
a jeżeli nie będzie działać podmień
<?php
login,
email,
imie,
nazwisko
FROM logowanie
WHERE login = \"'.$_POST[ 'loginName' ].'\" AND
?>
na
<?php
FROM logowanie
WHERE login = '\".$_POST[ 'loginName' ].\"' AND
haslo = '\".md5( $_POST[ 'password' ] ).\"' LIMIT 0, 1\" ) or die (mysql_error());
?>
brekmar
21.07.2005, 10:31:52
Zrobilem tak jak kazales i dalej nie dziala, caly czas "zly login lub haslo". Podmienilem to i tez nie dziala, macie jakies inne propozycje.
nospor
21.07.2005, 10:38:16
hihi, nie prawa dzialac gdyż w pętli pobierany jest użytkownik az do pobrania niczego. powinno byc bez pętli:
$userData = mysql_fetch_assoc( $dane );
pozatym ty jak wkaldasz dane do bazy to też kodujesz md5?
crash
21.07.2005, 10:38:33
brekmar: podałem Ci gotowy sprawdzony skrypt, a ty cały czas jakieś problemy sprawiasz. Dodałeś w ogóle poprawne dane do bazy?
brekmar
21.07.2005, 12:25:09
Poprawilem na
$userData = mysql_fetch_assoc( $dane );
I dalej nie dziala. Jedna funkcja a ile problemow sprawia, czekam na kolejne propozycje.
Levabul
21.07.2005, 13:56:02
No to pokaż wartości w twojej tabeli
ps. Nospor myliłem sie
brekmar
21.07.2005, 14:11:38
nospor
21.07.2005, 14:19:08
No tak jak mówiłem. Do tabeli wkładasz haslo w postaci jawnej, a przy próbie pobrania z tabeli do porównania dajesz zakodowane w md5. Musisz do tabeli też wkladać w postaci md5. Rajciu, trochę logiki.
I pamietaj zeby tylko raz pobrac:
$userData = mysql_fetch_assoc( $dane );
brekmar
21.07.2005, 14:30:57
Aha, tylko ze co to jest te md5, mam taki skrypt dodawania, jak to przerobic na te md5
<html>
<head>
<title></title>
</head>
<body>
<?php
die (\"Nie można poł±czyć się z MySQL\"); die (\"Nie można poł±czyć się z baz±\");
$showForm = true;
if ($login && $haslo && $email && $imie && $nazwisko) {
$sql = \"select login from logowanie where login='$login' limit 1\";
echo \"taki login istnieje prosze podać inny\"; else
{
$showForm=false;
$zapytanie = \"INSERT INTO logowanie (nr, login, haslo, email, imie, nazwisko) \";
$zapytanie .= \" VALUES ('', '$login', '$haslo', '$email', '$imie', '$nazwisko')\";
echo $login.' '.$haslo.'....'; }
}
if ($showForm)
{
print '<FORM METHOD=\"POST\">Nowy rekord:'; print '<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"dodaj\"><TABLE>'; print '<TR><TD>Login:</TD><TD><INPUT '; print 'TYPE=\"text\" NAME=\"login\"></TD></TR><TR><TD>Haslo:</TD><TD><INPUT TYPE=\"password\" '; print 'NAME=\"haslo\"></TD></TR><TR><TD>e-mail:</TD><TD><INPUT '; print 'TYPE=\"text\" NAME=\"email\"></TD></TR> '; print '<TR><TD>Imię:</TD><TD><INPUT TYPE=\"text\" '; print 'NAME=\"imie\"></TD></TR><TR><TD>Nazwisko:</TD><TD><INPUT '; print 'TYPE=\"text\" NAME=\"nazwisko\"></TD></TR> '; print '</TABLE><INPUT TYPE=\"submit\" VALUE=\"Dodaj\"></FORM>'; }
?>
</body>
</html>
nospor
21.07.2005, 14:35:19
Osłabiasz mnie. Czy ty wogóle próbujesz się czegoś nauczyć z tych naszych wypowiedzi, czy tylko biernie robic ctrl+c, ctrl+v? CZłowieku ty się zastanów. Marnujesz i nasz i swój czas.
Przecież podczas sprawdzania, czy użytkownik jest zalogowany używane jest md5.
md5( $_POST[ 'password' ] )
ty troche analizuj nasze kody bo człowieka krew zalewa.
Teraz na podobnej zasadzie wstaw to do inserta.
pomijam fakt, że @crashu podobna dał ci działającą wersję. Więc nie rozumiem skąd to wszystko
brekmar
21.07.2005, 14:56:20
DZIAŁA I TO WSZYSTKO CO MAM DO POWIEDZENIA
Levabul
22.07.2005, 07:46:03
Te a dziękuje już nie powiesz

:?
Nie wychowane to takie
- nosporNo nie

.
brekmar
22.07.2005, 11:54:47
DZIEKUJE
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.