Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Prosba o pomoc - mam prosty blad w pliku logowania
dareckiphp
post 14.07.2003, 19:37:55
Post #1





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 10.07.2003

Ostrzeżenie: (0%)
-----


:?: Czy ktos doswiadczony moglby zobaczyc co napisalem i wskazac gdzie palnalem glupote.
Mam tabele 'osoba' o polach $uzytkownik i $haslo oraz $stanowisko.
Chcialbym aby przy logowaniu skrypt sprawdzal kto sie loguje i przekierowywal go na odpowiednia strone.
Caly czas jednak kieruje mnie do strony loguj_ok.php. Blagam o pomoc.
--
[php:1:fab6297097]<?php

require ("../security/funkcje.php");
polaczenie();

if(!isset($uzytkownik) && !isset($haslo)) { // brak wpisu
echo "blad";

} else { // wpisy zrobione -> polaczenie
$test = "SELECT id_stanowisko
FROM osoba
WHERE login = '$uzytkownik' AND haslo = '$haslo'";
$wynik_testu = mysql_query($test);

if ($wynik_testu = 1) { // jesli id_stanowisko=1 (int) to jest admin
header ("Location: ../rezerwacje/login_ok.php");
exit;
}
if ($wynik_testu = 2) { // to kelner
header ("Location: ../rezerwacje/login_ok_kelner.php");
exit;
}
}

?>[/php:1:fab6297097]
Go to the top of the page
+Quote Post
scanner
post 14.07.2003, 19:48:00
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Między liniami 13 a 15 brakuje np. [manual:7516599e30]mysql_fetch_assoc()[/manual:7516599e30]. Oczywiście sam warunek w [manual:7516599e30]if()[/manual:7516599e30] tez należy przebudować.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
zulus
post 14.07.2003, 19:49:29
Post #3





Grupa: Zarejestrowani
Postów: 225
Pomógł: 18
Dołączył: 30.06.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


moim zadniem niepotrzebnie użyłes instrukcji if do $wynik_testu

lepiej popraw to tak:
[php:1:8e3a9a9ee3]<?php
$wynik_testu_row = mysql_num_rows($wynik_testu);
//sprawdzi ile wierszów zostało zwrócone w wyniku zapytania
if($wynik_testu_row == 0) {
echo "coś żle wpisałeś";
//nic nie zwróciło więc wywala błąd
exit;
} else {
echo "zalogowałeś się BRAWO!!!";
//wszystko dobrze wpisz co ma się pojawić
exit;
}
?>[/php:1:8e3a9a9ee3]
przerób wedłu własnej woli
Go to the top of the page
+Quote Post
maggot
post 14.07.2003, 20:21:51
Post #4





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 7.05.2002
Skąd: Sz-n/Wroc/Wawa

Ostrzeżenie: (0%)
-----


4 linia
[php:1:c2f74a5cf4]<?php
if($wynik_testu_row == 0) { // ==
?>[/php:1:c2f74a5cf4]

"=" sluzy do przypisywania wartosci
porownuje sie "=="
!!!!!!


--------------------
/maggot/
Go to the top of the page
+Quote Post
dareckiphp
post 14.07.2003, 21:33:23
Post #5





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 10.07.2003

Ostrzeżenie: (0%)
-----


No wszystko fajnie, ale nadal brak rezultatow.
Nadal kierowany jestem jedynie na strone login_ok.php (czyli == 1).
Wdzieczny bede za pomoc ponownie.
Teraz skrypt wyglada tak (jesli dobrze zrozumialem):
[php:1:4c3f2d6369]<?php
// ...
$test="SELECT id_stanowisko FROM osoba WHERE login = '$uzytkownik' AND haslo = '$haslo'";
$wynik_testu = mysql_query($test);
$wynik_testu_row = mysql_num_rows($wynik_testu);

if ($wynik_testu_row == 1){
header ("Location: ../rezerwacje/login_ok.php");
exit; }
if ($wynik_testu_row == 2){
header ("Location: ../rezerwacje/login_ok_2.php");
exit; }
//...
?>[/php:1:4c3f2d6369]
Go to the top of the page
+Quote Post
zulus
post 14.07.2003, 21:39:08
Post #6





Grupa: Zarejestrowani
Postów: 225
Pomógł: 18
Dołączył: 30.06.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat
No wszystko fajnie, ale nadal brak rezultatow.
Wdzieczny bede za pomoc ponownie.
Teraz skrypt wyglada tak (jesli dobrze zrozumialem):
[php:1:5c1d75286f]<?php
// ...
$test="SELECT id_stanowisko FROM osoba WHERE login = '$uzytkownik' AND haslo = '$haslo'";
$wynik_testu = mysql_query($test);
$wynik_testu_row = mysql_num_rows($wynik_testu);

if ($wynik_testu_row == 1){
header ("Location: ../rezerwacje/login_ok.php");
exit; }
if ($wynik_testu_row == 2){
header ("Location: ../rezerwacje/login_ok_2.php");
exit; }
//...
?>[/php:1:5c1d75286f]

już prawie ale tzreba było poczytać komentarze
$wynik_testu_row zawiera ilość wierszy zwróconych w wyniku zapytania czyli jeżeli wpisał niepoprawne dane
$wynik_testu_row == 0 !!!!!!
w przeciwnym wypatku równa się 1
zmień na :
[php:1:5c1d75286f]<?php
if ($wynik_testu_row == 0) {
header ("Location: ../rezerwacje/login_ok.php");
//nie wyszło
exit;
} else {
header ("Location: ../rezerwacje/login_ok_2.php");
//udało się
exit; }
//...
?>[/php:1:5c1d75286f]
Go to the top of the page
+Quote Post
dareckiphp
post 14.07.2003, 22:07:28
Post #7





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 10.07.2003

Ostrzeżenie: (0%)
-----


ok, chyba sie nie do konca zrozumielismy.
Udalo mi sie wyczytac istnienie uzytkownika w bazie.
Chcialem sprawdzac jednak jaki status posiada uzytkownik. Czy jest adminem czy np. kelnerem.
[php:1:907a9225cf]<?php
$test = "SELECT id_stanowisko FROM osoba WHERE login = '$uzytkownik' AND haslo = '$haslo'";
$wynik_testu = mysql_query($test);
$wynik_testu_row = mysql_num_rows($wynik_testu);

if ($wynik_testu_row == 0) {
header ("Location: ../rezerwacje/login_blad.php");
exit;
} else {
/* no i tu pewnie powinno byc z if'em czego ma szukac
jesli id_stanowisko =1, to headerem na strone login_ok.php
jesli id_stanowisko =2, to na strone login_ok_kelner.php
I tego wlasnie nie umiem zrobic, bo albo wyrzuca wszystkich w bazie, albo ile rekordow znalazl dla tego wlasnie uzytkownika.
*/

}
?>[/php:1:907a9225cf]
Go to the top of the page
+Quote Post
members_of_mayda...
post 14.07.2003, 22:12:15
Post #8





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 17.06.2003
Skąd: Niemcy / Siemianowice

Ostrzeżenie: (0%)
-----


czyli , jeżeli nie jest adminem jest kelnerem ?? admin loguje sie do jednej czesci strony a kelner .. :) do drugiej tak to ma wyglądać


--------------------
pozdrawiam :)
Go to the top of the page
+Quote Post
zulus
post 14.07.2003, 22:15:29
Post #9





Grupa: Zarejestrowani
Postów: 225
Pomógł: 18
Dołączył: 30.06.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


żeby odczytać wartości uzyskane w wyniku zapytania trzeba zrobić tak:
[php:1:8624cc8dda]<?php
$id = mysql_fetch_array($wynik_testu);
//funkcja zpisuje elemanty w formie tablicy asocjacyjnej
if($id[stanowisko] == admin) {
echo "jesteś adminiem";
//przekierowanie
exit;
} else {
echo "jesteś kelnerem";
//przekierowanie
}
?>[/php:1:8624cc8dda]
Go to the top of the page
+Quote Post
members_of_mayda...
post 14.07.2003, 22:16:34
Post #10





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 17.06.2003
Skąd: Niemcy / Siemianowice

Ostrzeżenie: (0%)
-----


zulus tez tak bym to zrobił


--------------------
pozdrawiam :)
Go to the top of the page
+Quote Post
zulus
post 14.07.2003, 22:27:17
Post #11





Grupa: Zarejestrowani
Postów: 225
Pomógł: 18
Dołączył: 30.06.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


przedstawiam w takim razie wynik całego tematu:
[php:1:fcf06e0179]<?php
$test = "SELECT id_stanowisko FROM osoba WHERE login = '$uzytkownik' AND haslo =
'$haslo'";
$wynik_testu = mysql_query($test);
$wynik_testu_row = mysql_num_rows($wynik_testu);

if ($wynik_testu_row == 0) {
header ("Location: ../rezerwacje/login_blad.php");
exit;
} else {
$id = mysql_fetch_array($wynik_testu);
//funkcja zpisuje elemanty w formie tablicy asocjacyjnej
if($id[stanowisko] == 1) {
//jest adminem przekierowanie
header(Location: login_ok_admin.php);
exit;
} else {
//jest kelnerem przekierowanie
header(Location: login_ok_admin.php);
}

}

?>[/php:1:fcf06e0179]
Go to the top of the page
+Quote Post
dareckiphp
post 14.07.2003, 22:28:37
Post #12





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 10.07.2003

Ostrzeżenie: (0%)
-----


No wielkie dzieki za pomoc. Po kilku drobnych modyfikacjach i przeskoczeniu Cannot modify header information wszystko chodzi jak nalezy.
biggrin.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 15:56