Strona 1 z 1
Panel logowania
: 15 gru 2008, 21:07
autor: warka321
Witam
Zwracam się z prośbą o panel logowania i opisanie krok po kroku jak dodać go do strony www. Potrzebuje sam panel logowania bez rejestracji dla 3 osób gdzie po wpisaniu login i hasło zostanie zalogowany do swojego katalogu aby móc pobierać pliki wcześniej stosowałem pliki thaccess ale to bardzo brzydko wygląda. Proszę też o wytłumaczenie co mam stworzyć w katalogach użytkowników oraz w pliku index.php
efekt końcowy mam być taki że po wpisaniu user artur hasło ******* zostanie przeniesiony do swojego folderu artur gdzie będzie mógł pobierać pliki tam się znajdujące
THX czekam na instrukcje

Odp: Panel logowania
: 16 gru 2008, 14:01
autor: ementos
No to jasne w php. Musisz mieć serwer z obsługą php...
Fajnie byłoby użyć bazy, ale inaczej:
Kod: Zaznacz cały
<?
session_start;
session_register('zalogowany'); #co do sesji nie jestem pewien
if($_GET['co']=='zaloguj'&&$_POST['login']=='artur'&&$_POST['haslo']='hasloartura'){
$_SESSION['zalogowany']=1;
}elseif($_GET['co']=='zaloguj'&&$_POST['login']=='inny'&&$_POST['haslo']='haslo2'){
$_SESSION['zalogowany']=1;
}elseif($_GET['co']=='zaloguj'&&$_POST['login']=='trzeciuser'&&$_POST['haslo']='haslo3'){
$_SESSION['zalogowany']=1;
}elseif($_SESSION['zalogowany']!=1){
$_SESSION['zalogowany']=0;
print'<form action="?co=zaloguj" method="post">Login: <input type="text" name="login">
Hasło:<input type="password" name="haslo"><input type="submit" value="Zaloguj"></form>';}
if($_SESSION['zalogowany']==1){
print'tajna tresc';
}
?>
Co do folderów... to trzeba by pokombinować
Pozdrawiam
Odp: Panel logowania
: 16 gru 2008, 15:44
autor: 17piotrek
Po prostu w miejscach
dopisz coś takiego
. I radze zmienic to
na
Odp: Panel logowania
: 16 gru 2008, 15:56
autor: ementos
Problem w tym, że każdy może wejść do katalogu... Jeśli zna jego adres

Pozdrawiam
Odp: Panel logowania
: 17 gru 2008, 15:42
autor: 17piotrek
To ustaw sobie ftp na dany katalog. Albo zrob cos takiego:
Kod: Zaznacz cały
if ($_SESSION['zalogowany'] == 'katalog') // gdy nazwa katalogu jest taka sama jak user
{
$dir = scandir(katalog);
for ($i=1; $i <= count(katalog); $i++)
{
echo "<a href=\"".$dir[$i]."\">$dir[$i]</a>";
}
}
Odp: Panel logowania
: 22 gru 2008, 16:55
autor: deallas
@17piotrek
Lipa z tym sposobem bo nawet niezalogowany użytkownik może pobrać pliki jeśli nie jest zalogowany. Wystarczy że zna nazwę katalogu. Istnieją 2 sposoby zabezpieczenia się przed intruzem.
1. Pliki .htaccess i .htpasswd (patrz google np coś takiego
http://blog.rabinek.pl/2006/07/15/katalog-z-haslem/ )
2. Lub jeśli nie masz dostępu do tych plików to należy umieścić te pliki przed folder public_html (jeśli nie możecie nic wstawić przed ten folder to wpakujcie te pliki do byle jakiego folderu i dorzućcie do tego samego folderu plik .htaccess, w nim wpiszcie "deny from all") i wysyłać je poprzez odpowiednie nagłówki (funkcja header()).
pozdro
Odp: Panel logowania
: 22 gru 2008, 17:00
autor: ernMagic101
a extreme-fusion ma opcje żeby pliki mogli widzieć tylko administratorrzy a jak się ktoś zarejestruje to jest urzytkownikiem może tak
Odp: Panel logowania
: 22 gru 2008, 17:14
autor: deallas
o ja to samo może phpbb, ip i wiele wiele innych skryptów więc po co ten post.
Jeszcze jako dokończenie do mojego postu.
Kod: Zaznacz cały
<?php
function dl_file($file){
//First, see if the file exists
if (!is_file($file)) { die("<b>404 File not found!</b>"); }
//Gather relevent info about file
$len = filesize($file);
$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"."),1));
//This will set the Content-Type to the appropriate setting for the file
switch( $file_extension ) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
case "mp3": $ctype="audio/mpeg"; break;
case "wav": $ctype="audio/x-wav"; break;
case "mpeg":
case "mpg":
case "mpe": $ctype="video/mpeg"; break;
case "mov": $ctype="video/quicktime"; break;
case "avi": $ctype="video/x-msvideo"; break;
//The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
case "php":
case "htm":
case "html":
case "txt": die("<b>Cannot be used for ". $file_extension ." files!</b>"); break;
default: $ctype="application/force-download";
}
//Begin writing headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
//Use the switch-generated Content-Type
header("Content-Type: $ctype");
//Force the download
$header="Content-Disposition: attachment; filename=".$filename.";";
header($header );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len);
@readfile($file);
exit;
}
?>
Pierwsze pogrubienie jest to nazwa pliku pod jaką jest wysyłana z serwera do użytkownika (należy więc tą nazwę zmienić tak aby użytkownik się nie zorientował skąd pochodzi ten plik). Drugie pogrubienie jest to wczytanie pliku, tutaj nie dokonujemy zmian z nazwą pliku. To jest oczywiście tylko przykład wzięty na żywca z
http://pl2.php.net/header bo nie chciało mi się tyle kodu klepać;)