Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Panel administracyjny - logowanie
tomek55
post 2.11.2003, 14:20:48
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 8.09.2003
Skąd: olsztyn

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


Witam!

Mam taki scrypt (troche pomieszany, bo jeden z pierwszych) smile.gif służy on do logowania do panelu administracyjnego, i mam problem bo nie wiem jak zrobić autologowanie, chodzi o coś takiego np. zalogowałem się -> wchodze na np onet -> wracam na strone gdzie sie logowałem przedchwilą i już jestem zalogowany... Jak to zrobić...? Próbowałem na sesjach ale coś mi nie wychodzi (nigdy jeszcze ich nie używałem...)

Proszę pomóżcie smile.gif

scrypt:

[php:1:d26c988b9b]<?php
include("config.php");

session_start();
echo"Numer sesji: ";
print session_id();

session_register ("login");
session_register ("haslo");

$hasla = array (''.$_POST["login"].'' => ''.$_POST["haslo"].'');

#end



$wynik = mysql_query("select * from admini");

while ($rekord = mysql_fetch_array ($wynik)) {
$id = $rekord[0];
$date=$rekord[1];
$login = $rekord[2];
$haslo = $rekord[3];
$ggg = $rekord[4];
}

$wynik = mysql_query("select * from hhnews order by id desc");

//instrukcja logowania
if (($_POST["login"]) && ($_POST["haslo"])) {
if ($hasla[$_POST["login"]] == $_POST["haslo"]) {



echo"<br><a href="wyloguj.php">Wyloguj</a>";
//loginy i hasla

$_SESSION["login"] = $_POST["login"];
$_SESSION["login"] = $_POST["haslo"];//


//panel

echo"<table border=1 width=555><tr><td width=17>Id</td><td width=150>Tytuł</td><td width=85>Autor</td><td>Data dodania</td><td width=50>Edytuj</td><td width=50>Skasuj</td></tr>";


while ($rzad = mysql_fetch_array($wynik))
{


echo"<table border=1 width=555>
<tr><td width=17>$rzad[id]</td><td width=150>$rzad[title]</td><td width=85>$rzad[autor]</td><td>$rzad[date]</td><td width=50><a href=edytuj.php?id=$rzad[id]>Edytuj</a></td><td width=50><a href=ed.php?co=skasuj&id=$rzad[id]>skasuj</td></tr>


</table>";


}

//instrukcja kasowania

if($co=='skasuj') {

$wynik=mysql_query

("DELETE FROM hhnews WHERE id='$id';");

}


//instrukcja dodawania

if ($co == 'dodaj') {
if ($title && $text && $autor) {
mysql_query("INSERT INTO hhnews VALUES('', now(), '$title','$text','$autor')");
} else{ echo"uzupelnij wszystkie pola"; }
}
elseif ($co == 'pokaz_dodaj') {

}

echo'<br><br><br>Dodaj newsa:<br><form action="ed.php" method="post">
<input type="hidden" name="co" value="dodaj">
<table><tr><td>tytuł</td><td><input type="text" name="title" value='.$rzad[title].'></td></tr>
<tr><td>treść newsa:</td><td><input type="text" name="text" value='.$rzad[text].'></td></tr>
<tr><td>autor</td><td><input type="text" name="autor" value='.$rzad[autor].'></td></tr></table>

<input type="submit" VALUE="dodaj"></form>';


// jesli zostaly podane zle dane przy logowaniu

}else {
echo("zle dane!");
}

//formularz logowania
} else {

echo'<form action="ed.php" method="post">
<table><tr><td>Login:</td><td><input type="text" name="login" value="'.$_POST["login"].'"></td></tr>
<tr><td>Haslo:</td><td><input type="password" name="haslo" value="'.$_POST["haslo"].'"></td></tr><tr><td><input type="submit" value="wyslij" ></td></tr></table></form>';
}
?>[/php:1:d26c988b9b]
Go to the top of the page
+Quote Post
mhs
post 2.11.2003, 15:47:35
Post #2





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


ogolny schemat postepowania jest taki:

wykorzystujesz do tego ciasteczka (zapoznaj sie z tym m.in. z funkcja [manual:12c1871fd1]setcoockie()[/manual:12c1871fd1])

oczywiscie tworzysz dodatkowe pole w formularzu (checkbox) - jezeli uzytkownik zaznaczy je (sprawdzasz przy uzyciu instrukcji):
[php:1:12c1871fd1]<?php
if ($_POST['NazwaPolaWFormularzu'] == 'on')
?>[/php:1:12c1871fd1]
to ustawiasz ciasteczko w ktorym zapisujesz nazwe uzytkownika i np. poddane dzialaniu funkcji [manual:12c1871fd1]md5()[/manual:12c1871fd1] haslo

na koniec na poczatku kazdego skryptu sprawdzasz czy po stronie uzytkownika zostalo ustawione ciastko i sprawdzasz poprawnosc zapisanych w nim danych (porownujesz na przyklad z tym co masz w bazie danych) i jezeli jest ok to rejestrujesz to automatycznie logujesz...

ps. ide po jakies ciastka bo tak sama kawe pic to troche glupio... smile.gif
Go to the top of the page
+Quote Post
tomek55
post 2.11.2003, 20:02:42
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 8.09.2003
Skąd: olsztyn

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


a czy nie da się tego zrobić na sesjach?
Go to the top of the page
+Quote Post
mhs
post 2.11.2003, 20:57:33
Post #4





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


w momencie gdy wywolujesz funkcje [manual:48a0c195f7]session_start()[/manual:48a0c195f7] juz w tej chwili korzystasz z sesji... to co ja Ci proponuje jest uzupelnieniem tego co juz napisales.... wiec tak czy siak operujesz na sesji...
Go to the top of the page
+Quote Post
tomek55
post 2.11.2003, 21:01:43
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 8.09.2003
Skąd: olsztyn

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


właśnie nie wiem dlaczego ale to co mam to nie działa... :/
Go to the top of the page
+Quote Post
squid
post 2.11.2003, 21:39:35
Post #6





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 3.07.2003
Skąd: Szczecin->niebuszewo->*(next to window)

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


Cytat
[php:1:1f5aae25a5]<?php
$_SESSION["login"] = $_POST["login"];
$_SESSION["login"] = $_POST["haslo"];//
?>[/php:1:1f5aae25a5]


nie powinno byc tak?:

[php:1:1f5aae25a5]<?php
$_SESSION["login"] = $_POST["login"];
$_SESSION["haslo"] = $_POST["haslo"];
?>[/php:1:1f5aae25a5]


--------------------
Jeśli życie to kara to nieźle nabroiłem ;-)
Go to the top of the page
+Quote Post
mhs
post 2.11.2003, 21:56:17
Post #7





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


ok, napisalem Ci tutaj przykladowy skrypcik logowania...
wybacz, ale nie testowalem go tylko napisalem od reki... mysle, ze nie powinno byc tutaj wiekszych bledow...
przeanalizuj go sobie i napisz rownolegly to tego co ja proponuje (NIE skopiuj go gdyz moga byc tak jakies literowki czy cos) masz napisane komentarze wiec w razie blednego dzialania masz wskazowke co jak to zrobic poprawnie.

formularz logowania
[xml:1:bbad80f977]
<form action='loguj.php' method="post">
Podaj nazwe uzytkownika: <input type="text" name="user" /><br />
Podaj haslo: <input type="text" name="haslo" /><br />
Zaloguj mnie automatycznie<input type="checkbox" name="autolog" />
<input type="submit" value="logowanie" />
</form>
[/xml:1:bbad80f977]

kod php
[php:1:bbad80f977]<?php
//sprawdzam czy uzytkownik jest zarejestrowany
if (!$_SESSION['uzytkownik']) {
//sprawdzam czy uzytkownik wypelnij wszystkie pola w formularzu
if ($_POST['user'] && $_POST['haslo']) {
//dodaje przed wyslaniem do bazy danych stosowne znaki
$_POST['user'] = addslashes($_POST['user']);
$_POST['haslo'] = addslashes($_POST['haslo']);
//nawiazuje polaczenie z serwerem bazy danych - tutaj MySQL
$polaczenie = @mysql_pconnect('host', 'uzytkownik', 'haslo');
//sprawdzam czy zostalo ustawione polaczenie
if ($polaczenie) {
@mysql_select_db('nazwaTwojejBazyDanych');
//tworze zapytanie
//zakladam, ze nazwa tabeli w ktorej przechowujesz informacje to: uzytkownicy
//nazwa pola, gdzie sa przechowywane nazwy uzytkownikow to: uzytkownik
//nazwa pola, gdzie sa przechowywane hasla uzytkownikow: to haslo
//haslo jest haszowane funkcja MD5()
$zapytanie = "SELECT * FROM uzytkownicy WHERE uzytkownik = '".$_POST['user']."' AND haslo = '".md5($_POST['haslo'])."'";
//wysylam zapytanie do bazy danych
$wynikZapytania = mysql_query($zapytanie);
//sprawdzam czy zostal zwrocony rekord z bazy danych
if (mysql_num_rows($wynikZapytania) == 1) {
$_SESSION['uzytkownik'] = $_POST['user'];
//sprawdzam czy uzytkownik zaznaczyl pole autologowanie
if ($_POST['autolog'] == 'on') {
//ustawiam ciastko o nazwie uzytkownika na jeden miesiac
setcookie('autolog', $_POST['uzytkownik'], time() + 2592000);
setcookie('klucz', md5($_POST['haslo']), time() + 2592000);
}
}
else {
echo 'Podales niepoprawne dane.';
}
}
else {
echo 'Nie mozna nawizac polaczenia z serwerem bazy danych.';
}
}
}
else {
echo 'Jestes zalogowany.';
}



//funcja sprawdzajaca czy danych uzytkownik powinien zostac automatycznie zalogowany
//bedzie ona umieszczona na poczatku kazdego skryptu
function sprawdzAutologowanie() {
//sprawdzam, czy w ciasteczku sa odpowiednie dane
if ($_COOKIE['autolog'] && $_COOKIE['klucz']) {
//polaczenie z serwerem bazy danych zostalo juz wczesniej nawiazane
$zapytanie = "SELECT * FROM uzytkownicy WHERE uzytkownik = '".$_COOKIE['autolog']."' AND haslo = '".$_COOKIE['haslo']."'";
$wynikZapytania = mysql_query($zapytanie);
if (mysql_num_rows($wynikZapytania) == 1) {
//jezeli uzyskalem pozytywny wynik z bazy danych rejestruje uzytkownika
$_SESSION['uzytkownik'] = $_COOKIE['uzytkownik'];
return true;
}
}
else {
//zwracam false gdyz uzytkownik nie moze zostac automatycznie zalogowany
return false;
}
}

?>[/php:1:bbad80f977]
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 - 20:04