em-ba
8.03.2008, 21:08:55
Witam, chciałem wykonać logowanie, które w zależności od tego kto się loguje to będzie łączony z dopowiednią stroną.
Czy ma Ktoś pomysł jak to można wykonać?
Myślałem nad czyms takim, zeby podzielić grupy osób na tabele i w zależności od tego z jakiej kto będzie "pochodził" tabeli to zostanie mu przedstawiona właściwa strona.
Mam nadzieje, że napisałem w miare przejzyscie

do tej pory korzystam z takiego logowania..
<?php
mysql_connect ('localhost', 'root', 'krasnal') or
die ("nie udało sie połączyć");
if($_SESSION['zalogowany'] == 0)
{
echo '<form id="LOGOWANIE" method="post" action="index.php" enctype="multipart/form-data"> <h2>Zaloguj się:</h2> <div>
Login:<br />
<input id ="login" type="text" name="login" maxlength="15"/><br /><br />
Hasło:<br />
<input id ="haslo" type="password" name="haslo" maxlength="10"/><br /><br />
<input id ="zaloguj" type="submit" name="zaloguj" value="Zaloguj"/>
<a href="form_rej.php"><input id ="zarejestruj" type="submit" name="zarejestruj" value="Zarejestruj"/></a>
</div>
</form>';
if (isset($_POST['login']) && isset($_POST['haslo'])) {
$login = $_POST['login'];
$haslo = $_POST['haslo'];
$sql = "SELECT id FROM uzytkownicy WHERE login='".$login."' and haslo='".$haslo."'";
echo "zostałeś zalogowany jako: $login"; $_SESSION['login'] = $login;
$_SESSION['zalogowany'] = 1;
$_SESSION['czas'] = time(); header ('location: strona1.php'); }else {
echo '<div style="margin-left: 300px;"><br /> <span style="color: red; font-weight: bold;">Wpisz prawidłowy login i hasło</span></div>';
}
}
}
else {
echo "Zostałeś zalogowany jako ".$_SESSION['login']."<br /><a href='index.php?log=wyloguj'>wyloguj</a>"; $intTimeoutSeconds = 600;
if(isset($_SESSION['intLastRefreshTime'])) {
if(($_SESSION['intLastRefreshTime']+$intTimeoutSeconds)<time())
{
header('location: index.php'); }
}
$_SESSION['intLastRefreshTime'] = time(); }
if ($_GET['log'] == "wyloguj") {
header('location: index.php'); }
?>
PawelC
8.03.2008, 21:11:54
Możesz to zrobić tak:
tabela users a w niej login, haslo, ranga. Wtedy podczas logowania skrypt sprawdzi jaką ma range, i na jej podstawie wyświetli to co dana ranga może zobaczyć.
em-ba
8.03.2008, 21:13:23
aha, ale to użytkownik obok loginu i hasła musiałby podawać jeszcze range?
PawelC
8.03.2008, 21:15:29
Nie-e, ranga zostanie domyślnie dodana jako np zwykly user i zmienić mu rangę możesz ty za pomoca panela.
em-ba
8.03.2008, 21:19:22
ok, rozumiem....
ale to ogołem ma być docelowo tak, ze ja nie bede zmieniał tej rangi tylko beda dodawani użytkownicy z róznych miejsc serwisu..
jedni to poprostu userzy, a kolejni beda dodawani juz bezpośrednio ze storny jako pracownicy //a jest ten sam panel logowania
PawelC
8.03.2008, 21:23:21
możesz to rozwiązać np tak
<?php
?>
<?php
$login = trim($_POST['login']); $haslo = trim($_POST['haslo']); $ranga=trim($_POST['ranga']); $loguj="select login,haslo,ranga from users where login='$login' and haslo='$haslo'";
if(mysql_num_rows($rekordy)==0)// sprawdzenie czy dany użytkownik istnieje w bazie {
echo' Podany login i haslo jest błędne'; // jeżeli nie istnieje taki użytkownik to wyświetla błąd }
else
{
$_session['ranga']=$_POST['ranga'];
if($_session['ranga']=='zwykly user'){
print "Twoja ranga to zwykły user"; //to co powinien widzieć zwykłu user }
if($_session['ranga']=='admin'){
print "twoja ranga to admin"; // to co powinien widzieć admin }
if($_session['ranga']=='vip'){
print "Twoja ranga to vip"; //to co powinien widzieć vip }
}
?>
To co napisałem to tylko przykład
em-ba
8.03.2008, 21:37:04
ok, dzieki, tylko mam takie pytanko...
no uzytkownicy beda mieli ta range=zwykly user i załóżmy bedzie im to nadawane automatycznie... a pracownicy?
pole z wyborem rangi dać w formularzu rej. userów jako ukryty? a w formularzu pracowników jako vip ..czy jakoś tak?
nie wiem wlasnie czy nie powinienem zrobić oddzielnej tabeli dla jednych i drugich w bazie danych... czy to nie ma znaczenia..
PawelC
8.03.2008, 21:39:53
w formularzu daj pole
<input type="hidden" name="ranga" value="zwykly user">
A reszcie będziesz musiał sam dać rangę wyższą jak zwykły user poprzez panel, innego wyjścia niewidzę, tak będzie najbezpieczniej. Niema sensu robić odzielnej tabeli.
em-ba
8.03.2008, 21:46:20
ok, dzieki - spróbuję coś takiego wykonać

myslalem tylko o 2 tabelach, bo wtedy bym sobie przechowywał inne dane dla userów w jednej tabeli i inne pracowników..
ale i tak dzieki za pomoc
PawelC
8.03.2008, 21:53:00
Możesz zrobić tak:
Tabela users:
login,haslo i ranga
Tabela teksty:
a w niej dodatkowo kolumne ranga i wtedy będziesz przy zapytaniu do bazy dodawał warunek where ranga='tutaj ranga' i zostanie pobrany tekst dla danej rangi np
<?php
select * from teksty where ranga='tutaj ranga'
?>
em-ba
8.03.2008, 22:05:53
aha, a w tabeli "teksty" co miałoby się znaleźć oprócz tej rangi?
..nazwy podstron, które potem się zainculdują, czy jak...?
PawelC
8.03.2008, 22:09:15
Może być nazwa pliku który includujesz, ale lepiej dać tam teksty. Np tytul, tresc,autor etc...
i np dla zwykłych userów zrobisz tak
tytul tresc autor ranga
jakis tytul jakas tresc zosia zwykly_user
A dla pracownika tak samo tyle że w ranga np pracownik. To już twoja wola co będziesz chciał trzymać w tej bazie, dla pracowników np jakieś informacje etc...
em-ba
8.03.2008, 22:14:22
no dobraa, dzieki, pokombinuje coś z tym
PawelC
8.03.2008, 22:18:19
To jest proste, jak już masz bazę danych zaprojektowaną to reszte masz z górki. W razie problemów daj mi znać np na gg albo PW
em-ba
8.03.2008, 22:27:02
ok

ja baze to mam itd wszystko działa tylko teraz chciałem wlasnie rozdzielić co się komu ma wyswietlac..
PawelC
8.03.2008, 22:28:43
Pracownikom np jakieś dane techniczne wszystko związane ze stroną techniczną serwisu, których niemogą zobaczyć zwykły userzy, a zwykłym userom artykuły etc...
em-ba
8.03.2008, 22:34:08
no tak, wlasnie o to mi chodzi
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.