Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z logowaniem
Forum PHP.pl > Forum > Gotowe rozwiązania
huka
Mam problem z zalogowaniem się do bazy. Napisałem taki skrypt:
[php:1:766bc4b097]<?php


@$pass = $_POST["Haslo"];
@$user = $_POST["Login"];

function checkPass($pass, $user)
{

$link = mysql_connect("localhost");
$flag = mysql_select_db($praca);
if(!$link || !$flag){
//echo("Problem z połączeniem z bazą danych");
return false;
}

$sql="SELECT Haslo FROM Prowadzacy WHERE Login = '".$user."'";
$result = mysql_query($sql);
if(!$row){
//echo("Problem z bazą danych.");
mysql_close($link);
return false;
}

$row = mysql_fetch_row($result);
if(!$row){
mysql_close($link);
return false;
}

if($row[0] != $pass){
mysql_close($link);
return false;
}
else {
mysql_close($link);
return true;
}
}

if(!checkPass($pass, $user)){
echo("<html><body><center>");
echo("<h2>Niepoprawne dane!</h2>");
echo("</center></body></html>");
}
else{
include('index.html');
}

?>[/php:1:766bc4b097]

Ale podczas logowania (po wprowadzeniu loginu i hasła które znajdują się w tabeli Prowadzacy) za każdym razem pojawia mi sie komunikat niepoprawne dane. Nie wiem dlaczego tak się dzieje.
Jeżeli znajdziecie jakiś błąd to dajcie znać.
Synaps
powinno byc chyba tak 8)
[php:1:82b0f35795]<?php

$sql="SELECT Haslo FROM Prowadzacy WHERE Login = '".$user."'";
$result = mysql_query($sql);
if(!$result){
//echo("Problem z bazą danych.");
mysql_close($link);
return false;
}


?>[/php:1:82b0f35795]

zamiat $result miales $row stad błąd winksmiley.jpg
popracuje troche nad debugiem :wink:
huka
Faktycznie tu był błąd. Wielkie dzięki.

Mam jeszcze jedno pytanie jak ustawić prawa dostępu wybranemu użytkownikowi po zalogowaniu do odpowiednich stron?
Chodzi mi o to że po zalogowaniu startuje strona główna na której są różne odnośniki i np. prowadzący ma prawo dostępu do wybranych odnośników a np. zwykły użytkownik ma prawa do innych.
Da się to jakoś napisać w php?
otacon
do kazdego uzytkownika mozesz dodac jeszcze jedno pole z prawami (np admin - 0, takie_prawa - 1, inne_prawa - 2...), jak user sie zaloguje to ustawiasz to w sesji i potem w zaleznosci od tej wartosci wyswietlasz co ci sie tam podoba....
Synaps
Żeby zrobić system praw bardziej elastycznym , zastanów się nad wprowadzeniem grup użytkowników. Dzięki temu będziesz miał mozliwość tworzenia grup w stylu np. admni, moderatorzy, newsmani, power-users, user etc etc. Żeby to zrobić zrób np. tak : [to tylko przykład]

- dodajesz tablice groups[id , group_name]
- dodajesz tablice user_group [id, user_id, group_id]
Daje Ci to możliwośc dynamicznego dodawania userów do grup i
nie musisz zmieniać nic w tabeli z użytkownikami.
- następnie w kodzie juz decydujesz do jakich elemtów grupa ma prawo (bazując tu na group_id)

To tak w skrócie 8)
huka
No właśnie słyszałem że najlepiej te prawa dostępu zrobić za pomocą sesji. Tylko niestety ja nie bardzo wiem jak to napisać.
Jak macie jakieś propozycje to podeślijcie.
Ive
ja toi robie tak:
1. przy rejestracji nowego usera w tabeli `user`mam pole 'poz' i w nim wstawiam cyferkę '3' [potem ewentualnie po zalogowaniu admina to zmieniam na inną cyfrę]
2. przy logowaniu wyciągam z bazy to pole i sprawdzam wartość dla logującego się właśnie usera i zapisuje do sesji [na początku strony musisz dać session_start(); ] za pomocą
[php:1:c37bfc0384]<?php
$query = mysql_query("SELECT * FROM `user` WHERE nick='$login' AND haslo='$xhas'") or die(mysql_error());
$cz = mysql_fetch_array($query);
$_SESSION['poz'] = $cz['poz'];
?>[/php:1:c37bfc0384]
no i teraz na głównym indexie dajesz kodzik
[php:1:c37bfc0384]<?php
if($_SESSION['poz'] == "1") {
/wyswietlasz menu dla admina
} elseif($_SESSION['poz'] == "2") {
//wyswietlasz menu dla moderatora
} elseif($_SESSION['poz'] == "3") {
//wyswietlasz menu dla usera
}
?>[/php:1:c37bfc0384]
huka
Kurcze poprawiłem ten błąd co zrobiłem na początkuz tym logowaniem (zamieniłem $row na $result) ale nadal nie chce mi to działać.Co najgorsze nie wiem dlaczego i co tam jest źle.

Może macie jakieś ciekawe skrypty logowania z hasłami w bazie danych albo jakiś namiar skąd można sobie taki skrypt pobrać?
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-2024 Invision Power Services, Inc.