Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Rejestracja,logowanie,zabez. ITD HELP!
Forum PHP.pl > Forum > Przedszkole
Gość
Witam serdecznie na początku napisze o co mi biega mianowicie umówiłem się z nauczycielem ze jesli napisze sklepik intern i po sprawdzeniu jesli nie zdoła sie dostac do srodka dostane 6 na koniec roku no wiec do żeczy napisałem sobie juz skrypt rejestracji

Kod
<?

if (!$login ||!$haslo ||!$haselko ||!$email)
{
print "nie uzupełniono wszytskiego";
exit;
}
$login = addslashes($login);
$haslo = addslashes($haslo);
$haselko = addslashes($hasleko);
$email = addslashes($email);

@$db = mysql_pconnect("localhost", "root", "krasnal");
if (!$db)  
    {  
    print "Nie można nawiązać połączenia z bazą danych";
    exit;
    }

mysql_select_db("serwis");

$query = "insert into rejestracja values  ('".$login."', '".$haslo."', '".$haselko."', '".$email."')";
$result = mysql_query($query);

if ($result)
print "Użytkownik <b>".$login."</b> z adresem <b>".$email."</b> został poprawnie zarejestrowany.Dziękujemy.";
else { print "W bazie istnieje już uzytkownik <b>".$login."</b> .Spróbuj jeszcze raz."; }


?>



chodzi mi na poczatek abyście mi wskazali jak go zabezpieczyć smile.gif i jak odwołac sie do logowania no to to bedzie na początek bede bardzo wdzieczny jesli bedziecie pisac, wszystko pisze z głowy i od podstaw exclamation.gif!!
-gubus15-
pomóżcie mi prosze was
fernet
Zrob strone na ktorej bedziesz przedstawial produkty z cena napisz ze jeli kolo chce cos kupic musi wyslac kase przekazem pocztowym i daruj sobie baze danych twoj nauczyciel bedze musial wtedy znac haslo do ftp.

Zeby kozystac z mysql w celach zarobkowych serwer na ktorym masz strone musi miec odpowiednia licencje a takie serwery sa platne. Kolejna kwestia to to czy ty jestes w stanie wystawic rachunek albo fakture.

Mozna do tego podejsc tez z drugiej strony sprzedajesz powiedzmy produkty x-sklepu ktory znajdzesz na osiedlu tylko sklep wyastawia fakture czy tam rachunek a ty po kontakcie telefonicznym z kupujacym dogadujecie sie co do platnosci...
gubus15
nie nie nie zle mnie zrozumiałes mam to stworzyć dodatkowo tylko dla nauczyciela tak o zeby miec po prostu 6 na koniec roku chce widziec ze potrafie takie cos stworzyc nom i reszta to już do góry napisane smile.gif
Shili
  1. <?php
  2. $login = addslashes($login);
  3. $haslo = addslashes($haslo);
  4. $haselko = addslashes($hasleko);
  5. $email = addslashes($email);
  6. ?>
Już w tym momencie może się dostać do bazy, jak jest odpowiednio kumaty i bodajże użyte jest odpowiednie kodowanie. Mówię to tylko jako ciekawostkę, bo jeśli chce się mieć 6, to jednak wypada samemu "postudiować" wymagany materiał i przychodzić z konkretnymi pytaniami, lub z konkretnym systemem.

Podpowiedź - po to jest skonstruowana funkcja specjalna pod mysql, żeby nie używać funkcji zabezpieczających, które są do wszystkiego na raz. Jaką funkcję zamiast addslashes - poszukaj winksmiley.jpg

Następna podpowiedź - prawdopodobnie musisz poczytać o register globals.
gubus15
pisze skrypty ale w tej pomocy bys mi mógł pomuc i wyjasnic to jalepsze co moze byc napisz co i jak ma byc co i co jest w skrucie i bede wiedział juz na przyszłości smile.gif
Shili
A po polsku?

Napisałam dwa zagadnienia, którym powinieneś poświęcić uwagę.

Nie mówiąc już o tym, że pisząc w google "bezpieczeństwo skryptów php" dostajesz obszerne odpowiedzi i wykłady na zagadnienia o bezpieczeństwie. A artykuł na portalu php.pl jest jednym z pierwszych wyników. Zapoznaj się z nim dokładnie i zapamiętaj sobie, że jeśli nie nauczysz się szukać - nic nie zrobisz.

Btw, register globals są omówione jako "Podstawianie zmiennych PHP".
Cienki1980
Po pierwsze to dostałbyś ode mnie ocenę 1 z ortografii .. ja wiem, może jestem stary i mam staroświeckie podejście do tego ale jak czytam kwiatki typu "skrut, pomuc " itp itd to mnie zalewa .. no ale się nie czepiam

Po drugie dostałbyś ode mnie ocenę 1 z podejścia do zaliczania ( zdobywania lepszej oceny ). Wystarczy poszukać bo temat bezpieczeństwa jest bardzo powszechny.

Po trzecie dostałbyś ode mnie ocenę 1 z obsługi forum a dokładniej wyszukiwarki. Jest wielki rozbudowany na 11 chyba już stron na temat bezpieczeństwa skryptów Bezpieczeństwo - temat przypięty

Przeczytaj, zrozum, zastosuj i w razie problemów pytaj biggrin.gif
gubus15
OK chyba wiem $_POST[zmienna] tak?

jak mam zrobic logowanie odwolujac sie do tej rejestracji??
Shili
No skoro masz zapisywane loginy i hasła w bazie, to robisz formularz logowania i sprawdzasz dane przesłane przez użytkownika. Jeśli istnieje rekord, który ma dokładnie taki sam login i dokładnie takie samo hasło, to logujesz. W przeciwnym razie nie.

Kurcze, na 6 to jednak wypada pomyśleć. Nauczyć się. A nie czekać na gotowe.
Więc próbuj - tak długo jak się da.

@down
Jestem kobietą snitch.gif
gubus15
od bezpieczenstwa nie chciałem zaczynać ale tak wyszło na początek to jak mam sie odwołąc aby napisac logowanie może mi ktos zacznie co i jak

shili no i łasnie mnie oświeciłeś juz wiem co i jak smile.gif

czy teraz jest good questionmark.gif? smile.gif


Kod
<?
if (!$login ||!$haslo ||!$haselko ||!$email)
{
print "nie uzupełniono wszytskiego";
exit;
}
$login = addslashes($_POST['login']);
$haslo = addslashes($_POST['haslo']);
$haselko = addslashes($_POST['hasleko']);
$email = addslashes($_POST['email']);

@$db = mysql_pconnect("localhost", "l", "h");
if (!$db)  
    {  
    print "Nie można nawiązać połączenia z bazą danych";
    exit;
    }

mysql_select_db("serwis");

$query = "insert into rejestracja values  ('".$_POST['login']."', '".$_POST['haslo']."', '".$_POST['haselko']."', '".$_POST['email']."')";
$result = mysql_query($query);

if ($result)
print "Użytkownik <b>".$_POST['login']."</b> z adresem <b>".$_POST['email']."</b> został poprawnie zarejestrowany.Dziękujemy.";
else { print "W bazie istnieje już uzytkownik <b>".$_POST['login']."</b> .Spróbuj jeszcze raz."; }


?>
ArekJ
gubas15 sorki za offtopic, ale Shili to kobieta winksmiley.jpg
gubus15
hehe OK
Shili
Jeszcze sprawdź w tym artykule co się używa zamiast addslashes. Dokładnie - od początku do końca. Jest tam rozwiązanie. Bo mam nadzieję, że nie stosujesz addslashes bezmyślnie i zdajesz sobie sprawę z tego co robią.
drPayton
@Cienki1980: Ty się nie czepiałeś, ja to się dopiero przyczepię haha.gif

1. Chcesz 6 dostać a masz problemy z tak absolutnymi podstawami? To za co Ty chcesz tą ocenę?!?
2. Wystarczy raz przeczytać podany Ci jak na dłoni artykuł (szukać nawet nie musisz) by w całkiem przyzwoity sposób móc zabezpieczyć skrypt.
3. Popatrzyłem na Twój kod i padłem:

  1. <?php
  2. (...)$haslo = addslashes($_POST['haslo']);(...)
  3. $query = "insert into rejestracja values  ('".$_POST['login']."', '".$_POST['haslo']."', '".$_POST['haselko']."', '".$_POST['email']."')";
  4. ?>


Hasło jako plaintext przechowujesz w bazie? Super, pogratulować, szczególnie w nawiązaniu do celu jaki chcesz osiągnąć -,-'

added. Doczytałem i kolejny kwiatek:
Troszczysz się coby dane do bazy poszły jak należy, ale już przy wyświetlaniu masz to gdzieś:
  1. <?php
  2. if ($result)
  3. print "Użytkownik <b>".$_POST['login']."</b> z adresem <b>".$_POST['email']."</b> został poprawnie zarejestrowany.Dziękujemy.";
  4. ?>


-,-'

added2: @down: I kolejny kwiatek, to akurat przegapiłem, dobre... haha.gif
bliitz
Cytat(gubus15 @ 15.09.2008, 21:07:21 ) *
Kod
<?
...
$login = addslashes($_POST['login']);
$haslo = addslashes($_POST['haslo']);
$haselko = addslashes($_POST['hasleko']);
$email = addslashes($_POST['email']);
...

$query = "insert into rejestracja values  ('".$_POST['login']."', '".$_POST['haslo']."', '".$_POST['haselko']."', '".$_POST['email']."')";
$result = mysql_query($query);

if ($result)
print "Użytkownik <b>".$_POST['login']."</b> z adresem <b>".$_POST['email']."</b> został poprawnie zarejestrowany.Dziękujemy.";
else { print "W bazie istnieje już uzytkownik <b>".$_POST['login']."</b> .Spróbuj jeszcze raz."; }


?>


Najpierw stosujesz addslashes i przypisujesz wartości z $_POST do zmiennych a później do bazy i tak wstawiasz dane bezpośrednio z $_POST, czyli jakie zabezpieczenie byś nie użył i tak jest nieskuteczne
-gubus15-
Wy wszyscy jestescie cwani jak to na kazdym forum ale kazdy ma jakies problemosy zamiast napisac co i jak zrobic zeby bylo dobrze opisac jak działa w skrócie to wy krytykujecie.Od tego jest to forum zeby pisac i pomagac a nie krytykowac dzieki narazie no comment
drPayton
Forum jest od tego, żeby pomagać z konkretnymi problemami, a nie od rozwiązywania cudzej pracy domowej... Zadaj konkretne pytanie - otrzymasz konkretną odpowiedź.
-gubus15-
OK wiec zadaje konkretne


O co chodzi z tymi addslashes
drPayton
W tym przypadku wstawiaj dane do bazy w następujący sposób:
  1. <?php
  2. mysql_query("INSERT INTO tabela (pole, pole2, pole3) VALUES (1, '".md5($_POST['haslo'])."', '".mysql_real_escape_string($_POST['tekst'])."')");
  3. ?>


W ten sposób (mysql_real_escape_string, a nie korzystając z addslashes) zapewniasz (na 99% winksmiley.jpg bezpieczeństwo danych wstawianych przez użyszkodnika. Nie ma potrzeby używania jakiegokolwiek zabezpieczenia przy hashu md5.
Poza tym, choć jest to kwestia projektowa, w mniejszym stopniu bezpieczeństwa, najpierw zawsze przeprowadź walidację danych (np czy wpisano poprawny email, czy login składa się wyłącznie z liter, cyfr i podkreślnika etc).

edit: literówki
Gość
czy nie powinno byc mysql_query??

jak mozesz opisac mi 2 linie tzn
Kod
'".md5($_POST['haslo'])."', '".mysql_real_escape_string($_POST['tekst'])."')");
drPayton
mysql_query oczywiście - literówka to była winksmiley.jpg

Dałem tam przykład wstawiania danych w string zapytania, nie ma znaczenia jak to zrobisz, chodziło mi tylko o pokazanie Ci funkcji która do tego służy.
gubus15
i to mi sie własnie podoba pisanie przykładów jak moge to zrobic a nie jeżdżenie po ludziach dzieki smile.gif Jak mozesz mi jeszcze pomóc czy cos to prosze pisz smile.gif z góry Ci dziękuje

czy Moge naprzykład tego tak uzyc?questionmark.gif

to zamieniajac na kod nizej

Kod
$haslo = addslashes($_POST['haslo']);

Kod
$haslo = mysql_real_escape_string($_POST['haslo']);


Żeby znów nie było smile.gif pisze konkretnie nagryzmoliłem cos takiego jak sprawa ogólnie wyglada??


logowanie
and
rejestracja

Kod
   <?php
   session_start();
   session_register("zalogowany");
  
   if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  
   mysql_connect("localhost", "login", "haslo")or die("Nie można nawiązać połączenia z bazą");
   mysql_select_db("serwis")or die("Wystąpił błąd podczas wybierania bazy danych");
  
   function ShowLogin($komunikat=""){
       echo "$komunikat
   ";
       echo "<form action='logowanie.php' method=post>";
       echo "Login: <input type=text name=login>
   ";
       echo "Hasło: <input type=text name=haslo>
   ";
       echo "<input type=submit value='Zaloguj!'>";
       echo "</form>";
       echo "Jeśli nie jesteś zarejestrowany, <a href='rejestruj.php'>tu znajdziesz formularz</a>";
   }
  
   ?>
  
   <?php
   if($_POST["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
   if($_SESSION["zalogowany"]!=1){
       if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
           if(mysql_num_rows(mysql_query("select * from rejestracja where login = '".htmlspecialchars($_POST["login"])."' AND haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
               echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
               $_SESSION["zalogowany"]=1;
               }
           else echo ShowLogin("Podano złe dane!!!");
           }
       else ShowLogin();
   }
   else{
   ?>
  
   <a href='index.php?wyloguj=tak'>wyloguj się</a>
   <?php
   }
   ?>
  
   </body>
   </html>
   <?php mysql_close(); ?>


rejestracja

Kod
   <?
   if (!$login ||!$haslo ||!$haselko ||!$email)
    {
   print "nie uzupełniono wszytskiego";
   exit;
   }
   $users = mysql_real_escape_string($_POST['users_login']);
   $users = mysql_real_escape_string($_POST['users_haslo']);
   @$db = mysql_pconnect("localhost", "login", "haslo");
   if (!$db)  
       {  
       print "Nie można nawiązać połączenia z bazą danych";
       exit;
       }
  
   mysql_select_db("rejestracja");
  
   $query = "insert into rejestracja values  ('".$_POST['users_id']."', '".$_POST['users_login']."', '".$_POST['users_haslo']."')";
   $result = mysql_query($query);
  
   if ($result)
   print "Użytkownik <b>".$_POST['login']."</b> z adresem <b>".$_POST['email']."</b> został poprawnie zarejestrowany.Dziękujemy.";
   else { print "W bazie istnieje już uzytkownik <b>".$_POST['login']."</b> .Spróbuj jeszcze raz."; }
  
  
   ?>



w sumie pole tekstowe do login,haslo podłącze z "zewnątrz"
-gubus15-
Czy te skrypty sa juz bezpieczne prosze o wypowiedz PRO.
Gość
napise ktos??
potreb
Nigdy nic nie jest bezpieczne, ale tak wystarczy zabezpieczyć.
Gość
potreb czyli mówisz ze wszystko jest jzu teraz OK dobrze stosuje te stringi questionmark.gif
gubus15
jak bys mógł jeszcze napisac jak np mam przypisac odpowiednie prawa do zwykłego usera i jak do administratora ze kiedy sie zaloguje user ma prawa takie i takie (jak sobie wyobrażę ) a jak sie zaloguje admin to takie i takie questionmark.gif
nospor
@gubus15 przestan pisać ciągle po x postow pod sobą, przestan ciagle odswierzan ten temat, bo skonczy sie to jego zamknieciem
DirectPL
Dosyć ciekawy temat ;-)

Rada 1. i ostatnia: Kup książkę "PHP i MySQL dla każdego" wydawnictwa Helion. Masz tam naprawdę dużo opisanych skryptów, do których Twój nauczyciel się nie przyczepi.

O ile mi się wydaje, to skrypt sklepu też tam jest...
marcio
PISALI ci wyzej ze do zapytan sql jest mysql_real_escape_string() a nie htmlspecialchars() i nie uzywaj register_globals
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-2025 Invision Power Services, Inc.