Turson
5.04.2011, 20:24:01
Form
<?PHP
echo '<div class="newsinfo"> <span class="title">Logowanie</span></div>';
if(($_SESSION["zalogowany"])==0){
echo "<table><form action=index.php?id=login2 method=post>"; echo "<tr><td>Login:</td> <td><input type=text maxlength=15 name=login class=in></td></tr><br>"; echo "<tr><td>Hasło:</td> <td><input type=password name=haslo maxlength=15 class=in></td></tr><br>"; echo "<input type=hidden value=1 name=send><br></table><br>"; echo "<input type=submit value='Zaloguj się' class=button>";} else echo "Jesteś zalogowany!"; ?>
Logowanie
<?PHP
if($_POST["send"]==1){
if(!empty($_POST["login"]) && !empty($_POST["haslo"])){ echo 'Zalogowano poprawnie jako '.$_POST["login"].'. <a href=index.php>Przejdz na strone główna</a>';}
$_SESSION["zalogowany"]=true;
$haslo = @mysql_query("SELECT user_id FROM users WHERE user_id='$_POST[login]'"); $_SESSION["id"] = $wiersz2[0]; }
}
else echo ("Podano złe dane!!!"); }
else echo "Pole loginu i hasła nie zostało uzupełnione."; }
else{
$haslo = @mysql_query("SELECT admin FROM users WHERE user_id='$_POST[login]'"); if($wiersz[0] == 1) {
$_SESSION["admin"]=1; }}
?>
Komunikaty nie są wyświetlane tak jak powinny
krzywy36
5.04.2011, 20:29:03
w czym problem...? Na szybko, usuń @ z komend mysql bo Ci ukrywa błędy
Turson
5.04.2011, 20:32:50
Ogólnie mam pomieszany kod i wywala syntax, unexpected } na 16 linii, nie mgoe sobie poradzic
Wcześniej gdy sie zalogowalem dobrze to wywalo, iz podano zle dane..
Fifi209
5.04.2011, 20:33:28
Ogólnie forum to nie parser.
Turson
5.04.2011, 20:34:34
Wiem, wrzuciłem zły kod z syntaxem. Poprawię na ten co miałem źle i wrzuce jeszcze raz.
Chwila:)
<?PHP
if($_POST["send"]==1){
if(!empty($_POST["login"]) && !empty($_POST["haslo"])){ echo 'Zalogowano poprawnie jako '.$_POST["login"].'. <a href=index.php>Przejdz na strone główna</a>';}
$_SESSION["zalogowany"]=true;
$haslo = mysql_query("SELECT user_id FROM users WHERE user_id='$_POST[login]'"); $_SESSION["id"] = $wiersz2[0]; }
}
else echo ("Podano złe dane!!!"); }
else{
$haslo = mysql_query("SELECT admin FROM users WHERE user_id='$_POST[login]'"); if($wiersz[0] == 1) {
$_SESSION["admin"]=1; }}}
?>
To nowy kod, nie wyświetla się nic gdy wpisze poprawne dane
lukaskolista
5.04.2011, 20:49:38
o ile mi wiadomo instrukcja warunkowa kieruje sie wartosciami true or false, a nie liczbami calkowitymi
Turson
6.04.2011, 13:15:50
A poza tym? Wydaje mi się, że nieprawidłowa kolejność ułożenia { i }
refresh
kadlub
6.04.2011, 14:34:32
<?PHP
if($_POST["send"]==1)
{
if(!empty($_POST["login"]) && !empty($_POST["haslo"])) {
{
echo 'Zalogowano poprawnie jako '.$_POST["login"].'. <a href=index.php>Przejdz na strone główna</a>';
$_SESSION["zalogowany"]=true;
$haslo = mysql_query("SELECT user_id FROM users WHERE user_login='".$_POST['login']."'"); $_SESSION["id"] = $wiersz2[0];
}
}
else {
echo "Podano złe dane!!!"; }
}
else
{
$haslo = mysql_query("SELECT admin FROM users WHERE user_login='".$_POST['login']."'"); if($wiersz[0] == 1) {
$_SESSION["admin"]=1; }}
}}
?>
zobacz ten kod
dziwny masz warunek
user_id='$_POST[login]
trzymasz login w user_id i w user_login??
może sie pomyliłeś
ja zmieniłem na user_login=$_POST['login']
Turson
6.04.2011, 14:39:53
Chyba problem jeszcze polega na haśle.
W rejestracji koduje na md5
W logowaniu
Wydaje mi się, że nie czyta hasła poprawnie
kadlub
6.04.2011, 14:44:36
no dobrze kodujesz md5 i odczytujesz podając md5 a powiedz jaką masz wielkość pola w tabeli ustawioną na te hasło
typ to varchar ? czy w jakiś inny
Turson
6.04.2011, 14:46:16
`user_haslo` VARCHAR( 30 )
kadlub
6.04.2011, 14:49:47
to zmień te 30 na 200 bo ci sie cały ten krzaczek nie mieści
załóż jakieś przykładowe konto użytkownika i spróbuj zalogować sie na nie
zobaczymy czy działa
Turson
6.04.2011, 14:58:10
Zmieniłem długośc pola do 200, zrobiłem nowe konto i komunikat 'Podano złe dane' przy wpisaniu prawidłowych.
kadlub
6.04.2011, 15:17:11
a w rejestracji tam gdzie zakładasz konto daj to
i zobaczymy teraz bo u mnie śmiga
Turson
6.04.2011, 15:22:26
Dalej nic, pokażę kod logowania.
<?PHP
function ShowLogin($komunikat=""){
echo "<table><form action=index.php?id=login2 method=post>"; echo '<tr><td>Login:</td> <td><input type=text maxlength=15 name=login class=in value='.$_POST[login
].'></td></tr><br>'; echo '<tr><td>Hasło:</td> <td><input type=password name=haslo maxlength=15 class=in value='.$_POST[haslo
].'></td></tr><br>'; echo "<input type=hidden value=1 name=send><br></table><br>"; echo "<input type=submit value='Zaloguj się' class=button>"; echo '<br><a href="index.php?id=recovery_pass">Zapomniałem hasła</a>'; }
if($_POST["send"]==1)
{
if(!empty($_POST["login"]) && !empty($_POST["haslo"])) {
{
echo 'Zalogowano poprawnie jako '.$_POST["login"].'. <a href=index.php>Przejdz na strone główna</a>';
$_SESSION["zalogowany"]=true;
$haslo = mysql_query("SELECT admin FROM users WHERE user_login='".$_POST['login']."'"); if($wiersz[0] == 1) {
$_SESSION["admin"]=1; }}
$haslo = mysql_query("SELECT user_id FROM users WHERE user_login='".$_POST['login']."'"); $_SESSION["id"] = $wiersz2[0];
}
}
else {
echo "Podano złe dane.Popraw je, a następnie spróbuj zalogować się ponownie."; ShowLogin();
}
}
else
{ echo "Jedno z pól nie zostało uzupełnione.Spróbuj ponownie.";ShowLogin
();; }
}
?>
darko
6.04.2011, 15:31:17
Poprawiłem formatowanie:
function ShowLogin(/*$komunikat = ""*/)
{
return '<table><form action="index.php?id=login2" method="post">' .
'<tr><td>Login:</td> <td><input type="text" maxlength="15" name="login" class="in" value="' . $_POST['login'] . '" /></td></tr><br/>' .
'<tr><td>Hasło:</td> <td><input type="password" name="haslo" maxlength="15" class="in" value="' . $_POST['haslo'] . '" /></td></tr><br>' .
'<input type="hidden" value="1" name="send"><br/></table><br/>' .
'<input type="submit" value="Zaloguj się" class="button">' .
'<br/><a href="index.php?id=recovery_pass">Zapomniałem hasła</a>';
}
if($_POST["send"]==1)
{
if(!empty($_POST["login"]) && !empty($_POST["haslo"])) {
"select
*
from users
where
{
echo 'Zalogowano poprawnie jako '.$_POST["login"].'. <a href=index.php>Przejdz na strone główna</a>'; $_SESSION["zalogowany"] = true;
$haslo = mysql_query("SELECT user_id FROM users WHERE user_login='" . $_POST['login'] . "'"); {
$_SESSION["id"] = $wiersz2[0];
}
}
else
{
echo "Podano złe dane. Popraw je, a następnie spróbuj zalogować się ponownie."; }
}
else
{
$haslo = mysql_query("SELECT admin FROM users WHERE user_login='" . $_POST['login'] . "'"); {
if($wiersz[0] == 1)
{
$_SESSION["admin"] = 1;
}
}
}
}
Turson
6.04.2011, 15:57:34
Dalej nie działa.
Chyba klamerki funkcji są nie tak
darko
6.04.2011, 16:06:17
Podpowiem jeszcze bardziej: gdzie zamykasz formularz?
kadlub
6.04.2011, 16:06:58
function ShowLogin(){
echo '<table><form action="index.php?id=login2" method="post">'; echo '<tr><td>Login:</td> <td><input type="text" maxlength="15" name="login" class="in" value='.$_POST['login'].'></td></tr><br>'; echo '<tr><td>Hasło:</td> <td><input type="password" name="haslo" maxlength="15" class="in" value='.$_POST[haslo
].'></td></tr><br>'; echo '<input type="hidden" value="1" name="send"><br></table><br>'; echo '<input type="submit" value="Zaloguj się" class="button"></form>'; echo '<br><a href="index.php?id=recovery_pass">Zapomniałem hasła</a>'; }
if($_POST["send"]==1)
{
if(!empty($_POST["login"]) && !empty($_POST["haslo"])) {
{
echo 'Zalogowano poprawnie jako '.$_POST["login"].'. <a href=index.php>Przejdz na strone główna</a>';
$_SESSION["zalogowany"]=true;
$haslo = mysql_query("SELECT admin FROM users WHERE user_login='".$_POST['login']."'"); if($wiersz[0] == 1) {
$_SESSION["admin"]=1; }}
$haslo = mysql_query("SELECT user_id FROM users WHERE user_login='".$_POST['login']."'"); $_SESSION["id"] = $wiersz2[0];
}
}
else {
echo "Podano złe dane.Popraw je, a następnie spróbuj zalogować się ponownie.";
}
}
else
{ echo "Jedno z pól nie zostało uzupełnione.Spróbuj ponownie."; }
}
ShowLogin();
u mnie ten kod działa
Turson
6.04.2011, 16:14:29
Komunikaty o błędnym haśle lub brakującym polu działają prawidłowo, jednak nawet gdy wpiszę prawidłowe, nie loguje się a wyświetla "Podano złe dane.Popraw je, a następnie spróbuj zalogować się ponownie."
kadlub
6.04.2011, 16:26:45
to według mię błąd leży po stronie rejestracji albo w bazie, danych sprawdziłeś czy dobrze dodaje do bazy dane w odpowiednie miejsca??
Turson
6.04.2011, 17:13:49
Zrobiłem konto test/test
W bazie - ok

Loguję się i "Podano złe dane.Popraw je, a następnie spróbuj zalogować się ponownie."
;<
darko
6.04.2011, 18:26:18
I wszystko jasne. W bazie masz ustawione varchar(30) tymczasem powinno być varchar(32) ponieważ md5('test') to 098f6bcd4621d373cade4e832627b4f6 czyli 32 znaki.
kadlub
6.04.2011, 18:34:31
Cytat(darko @ 6.04.2011, 19:26:18 )

I wszystko jasne. W bazie masz ustawione varchar(30) tymczasem powinno być varchar(32) ponieważ md5('test') to 098f6bcd4621d373cade4e832627b4f6 czyli 32 znaki.
już mu to pisałem miał zmienić
greycoffey
6.04.2011, 18:43:31
Btw. Nie varchar(32), nie varchar(30) a char(30) - optymalizacja, przecież wartość zwracana przez md5() jest zawsze 32-znakowa.
Stosowanie jakis funkcji "zabezpieczających" na md5() - EPIC FAIL!
Turson
6.04.2011, 20:32:58
Poradziłem sobie tym skryptem, może komuś się przyda:
<?PHP
if($_SESSION["zalogowany"]==0){
if(($_POST["send"])==0) {
echo '<table><form action="index.php?id=login2" method="post">'; echo '<tr><td>Login:</td> <td><input type="text" maxlength="15" name="login" class="in" value='.$_POST['login'].'></td></tr><br>'; echo '<tr><td>Hasło:</td> <td><input type="password" name="haslo" maxlength="15" class="in" value='.$_POST['haslo'].'></td></tr><br>'; echo '<input type="hidden" value="1" name="send"><br></table><br>'; echo '<input type="submit" value="Zaloguj się" class="button"></form>'; echo '<br><a href="index.php?id=recovery_pass">Zapomniałem hasła</a>';} else echo 'Zalogowano poprawnie jako '.$_POST["login"].'. <br><a href=index.php>Przejdz na strone główna</a>';}?> <?PHP
if(($_POST["send"])==1) {
if(!empty($_POST["login"]) && !empty($_POST["haslo"])){ echo 'Zalogowano poprawnie jako '.$_POST["login"].'. <br><a href=index.php>Przejdz na strone główna</a>'; }
$_SESSION["zalogowany"]=true;
$_SESSION['login'] = $_POST['login'];
$haslo = @mysql_query("SELECT user_access FROM users WHERE user_login='$_POST[login]'"); if($wiersz[0] == 1) {
$_SESSION["admin"]=1; }}
}
else echo("Podano złe dane!");
}
?>
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.