Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prosba o pomoc - mam prosty blad w pliku logowania
Forum PHP.pl > Forum > PHP
dareckiphp
:?: 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]
scanner
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ć.
zulus
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
maggot
4 linia
[php:1:c2f74a5cf4]<?php
if($wynik_testu_row == 0) { // ==
?>[/php:1:c2f74a5cf4]

"=" sluzy do przypisywania wartosci
porownuje sie "=="
!!!!!!
dareckiphp
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]
zulus
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]
dareckiphp
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]
members_of_mayday
czyli , jeżeli nie jest adminem jest kelnerem ?? admin loguje sie do jednej czesci strony a kelner .. :) do drugiej tak to ma wyglądać
zulus
ż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]
members_of_mayday
zulus tez tak bym to zrobił
zulus
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]
dareckiphp
No wielkie dzieki za pomoc. Po kilku drobnych modyfikacjach i przeskoczeniu Cannot modify header information wszystko chodzi jak nalezy.
biggrin.gif
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.