Panel logowania

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
warka321
Sędziwy Jeż
Sędziwy Jeż
Posty: 38
Rejestracja: 28 sty 2008, 20:34
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Panel logowania

Post 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 :)
Awatar użytkownika
ementos
Sędziwy Jeż
Sędziwy Jeż
Posty: 48
Rejestracja: 03 wrz 2008, 16:51
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

Odp: Panel logowania

Post 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
17piotrek

Odp: Panel logowania

Post autor: 17piotrek »

Po prostu w miejscach

Kod: Zaznacz cały

$_SESSION['zalogowany'] = 1;
dopisz coś takiego

Kod: Zaznacz cały

header ("Location: adres_katalogu_osoby");
. I radze zmienic to

Kod: Zaznacz cały

$_SESSION['zalogowany'] = 1;
na

Kod: Zaznacz cały

$_SESSION['zalogowany'] = 'imie';
Awatar użytkownika
ementos
Sędziwy Jeż
Sędziwy Jeż
Posty: 48
Rejestracja: 03 wrz 2008, 16:51
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

Odp: Panel logowania

Post autor: ementos »

Problem w tym, że każdy może wejść do katalogu... Jeśli zna jego adres ;)
Pozdrawiam
17piotrek

Odp: Panel logowania

Post 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>";
     }
}
deallas
Piegowaty Guziec
Piegowaty Guziec
Posty: 27
Rejestracja: 05 maja 2007, 20:18
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: Panel logowania

Post 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
Awatar użytkownika
ernMagic101
Piegowaty Guziec
Piegowaty Guziec
Posty: 19
Rejestracja: 21 gru 2008, 21:18
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Kontakt:

Odp: Panel logowania

Post autor: ernMagic101 »

a extreme-fusion ma opcje żeby pliki mogli widzieć tylko administratorrzy a jak się ktoś zarejestruje to jest urzytkownikiem może tak
deallas
Piegowaty Guziec
Piegowaty Guziec
Posty: 27
Rejestracja: 05 maja 2007, 20:18
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: Panel logowania

Post 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ć;)
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 15 gości