php5

Walidacja adresu e-mail w PHP

Jednym z często występujących problemów wśród webmasterów jest walidacja adresu e-mail. W PHP do walidacji danych używana jest funkcja preg_match. Funkcja ta przyjmuje jako pierwszy parametr wyrażenie regularne, natomiast drugi parametr to tekst, który ma zostać sprawdzony. Do większości potrzeb wystarczą proste wyrażenia regularne, jednak jeżeli chcemy być w 100% zgodni ze standardem powinniśmy użyć wyrażenia regularnego, które jest zgodne z RFC

[…]

Autor |10 grudnia, 2013|PHP, Tworzenie stron internetowych|0 komentarzy

Problem plecakowy czyli jak zoptymalizować pakowanie

Podczas pisania stron internetowych, a szczególnie w przypadku pisania sklepu internetowego prędzej czy później trafisz na problem Plecakowy. Czyli jak zoptymalizować pakowanie paczek do jakiegoś pojemnika. Wyobraźmy sobie sytuacje, że tworzymy list przewozowy dla kuriera. Klient w sklepie zamówił towary, które mają różną wagę. Naszym zadaniem jest tak spakować produkty by klient zapłacił jak najmniej za przesyłkę.

Problem plecakowy(ang. discrete knapsack problem) jest jednym z najczęściej występujących problemów optymalizacyjnych, przy którym należy wykorzystać algorytmy zachłanne.

Problem plecakowy czyli jak zoptymalizować pakowanie:

 Przy podanym zbiorze elementów o podanej wadze i wartości, należy wybrać taki podzbiór by suma wartości była możliwie jak największa, a suma wag była nie większa od danej pojemności plecaka.

Jak to zrobić? 

Najlepszym rozwiązaniem jest posortowanie paczek po wadze i pakowanie ich do plecaka od najcięzszej do najlżejszej. W przypadku braku miejsca, bierzemy nowy plecak.

 

Rozwiązanie problemu w PHP – kod obiektowy

[…]

Autor |5 grudnia, 2013|Algorytmy, PHP, Tworzenie stron internetowych|0 komentarzy

Tworzenie stron internetowych w modelu MVC

MVC jest to model programistyczny dzielący aplikację na trzy warstwy: model, widok(view) oraz kontroler(controller).

Model jest to warstwa odpowiadająca za obliczenia. Dzięki plikom modelów, możemy pobrać informacje z plików, bazy danych oraz odpowiednio je przetworzyć.

Widok jest warstwą prezentacji, dzięki której użytkownik może zobaczyć efekt działania aplikacji. W przypadku stron internetowych są to zazwyczaj pliki html.

Kontroler jest to warstwa, która łączy widok z modelem. Kontroler ma akcje, które są wywoływane na podstawie odpowiednich parametrów podanych przez użytkownika np. adres strony internetowej.
Praktyczne użycie wzorca MVC
Wyobraźmy sobie sytuacje, gdzie użytkownik wchodzi na stronę internetową pod adresem „http://rpodwika.pl/pliki/pobierzplik/id/3” co się wtedy dzieje?

Podczas wywołania tego adresu kontroller wie, że musi przekazać działanie kontrolerowi „pliki” a następnie wywołać akcje „pobierzplik” i przekazać parametr „id” o wartości „3”. Następnie w tej akcji tworzymy nowy obiekt modelu, który na podstawie wartości 3 zwróci odpowiednie dane, które zostaną wyświetlone za pomocą widoku „pliki/pobierzplik.html”

[…]

Autor |2 grudnia, 2013|PHP, Tworzenie stron internetowych|2 komentarze

Jak bezpiecznie przechowywać hasła w PHP

Przechowywanie haseł użytkowników określa w jaki sposób dbamy o ich bezpieczeństwo. Powszechna praktyka to używanie funkcji skrótu, które tworzą skrót hasła wprowadzonego przez użytkownika, który w teorii jest nieodwracalny(nie można ze skrótu uzyskać hasła). W praktyce jednak istnieją tak zwane tęczowe tablice(ang. rainbow tables), które w dość szybki sposób z wprowadzonego hasha(rezultat funkcji skrótu) odszukują w bazie hasło. Nasuwa się więc pytanie jak w poprawny sposób zabezpieczyć hasła użytkowników.
Czego nie należy robić by bezpiecznie przechowywać hasła w PHP

Nigdy nie określaj limitu znaków w haśle
Nie określaj znaków, które pojawiają się w haśle. Jeśli ktoś chce mieć $%#$ w haśle pozwól mu na to
Nigdy nie zapisuj haseł, które nie są zaszyfrowane/zahashowane
Nie zapisuj haseł używając funkcji MD5() oraz SHA1() gdyż w dzisiejszym świecie nie są bezpieczne z uwagi na moc obliczeniową komputerów, klastrów itp.
Nie wysyłaj haseł do użytkowników e-mailem(np podczas rejestracji)
W przypadku wykrycia ataku wymuś zmianę hasła dla wszystkich użytkowników przed ponownym zalogowaniem się do systemu

[…]

Autor |28 listopada, 2013|PHP|0 komentarzy

Jak zapobiec SQL Injection w PHP

Czym jest SQL Injection?
Z języka angielskiego jest to wstrzyknięcie kodu SQL do programu/skryptu/aplikacji. Program, skrypt, strona, które nie są odporne na ataki SQL Injection stwarzają ogromne ryzko dla użytkownika oraz dla samego systemu. Poprzez SQL Injection atakujący może uzyskać dostęp do naszej bazy danych, modyfikować ją, a nawet usunąć.
Jak wygląda atak SQL injection?
Prześledzmy poniższy kod PHP
$name = $_GET['name'];
mysql_query("SELECT * FROM `uzytkownicy` WHERE `imie` = $name");
parametr $name pobierany jest bezpośrednio z adresu URL, programista zakłada, że użytkownik zawsze wprowadzi imię. Jest to błędne podejście! Co w przypadku gdy ktoś wprowadzi poniższy ciąg znaków?
'Robert'; DELETE * FROM uzytkownicy
Wtedy zapytanie MySQL będzie wyglądało tak:
SELECT * FROM `uzytkownicy` WHERE `imie` = 'Robert'; DELETE * FROM uzytkownicy
Czyli po wykonaniu zapytania SELECT zostaną usunięte wszystkie rekordy z tabeli uzytkownicy!
[…]

Autor |28 listopada, 2013|PHP, Tworzenie stron internetowych|0 komentarzy

Jak stworzyć stronę internetową część 1

Jeżeli trafiłeś/trafiłaś na tą stronę to pewnie zastanawiasz się jak wygląda proces tworzenia stron internetowych. Pozwól, że Ci to wyjaśnię. Postaram się by ten wpis był zrozumiały dla osób nietechnicznych. Do zrozumienia tekstu wymagana jest znajomość kilku pojęć:

HTML – język znacznikowy dzięki, któremu wyświetlane są strony www
CSS – jest to język służący do stylowania […]


Warning: Use of undefined constant XML - assumed 'XML' (this will throw an Error in a future version of PHP) in /wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php on line 1048