Ten blog nie jest już rozwijany. Wraz ze wszystkimi artykułami zostały przeniesiony pod adres wmroczkowski.pl

Czy chcesz przejść pod nowy adres?

środa, 23 września 2009

[PHP] Jak zablokować wgrywanie na serwer plików przekraczających określony rozmiar

Jeżeli posiadamy portal na którym użytkownicy wgrywają na serwer różnego rodzaju pliku na pewno chcielibyśmy wprowadzić limit wielkości plików, które wgrywają. Zakładając, że w naszym formularzu znajduje się input, który wygląda mniej więcej tak:





Możemy dołożyć następujący kod PHP:


$file_size = $_FILES['plik']['size'];
// podajemy wielkość w Bajtach, więc zakładając że blokujemy wszystko powyżej 500KB
if($file_size < 512000) {
/*
Tutaj kod który zapisuje pliki na serwerze
*/
}
else echo "Plik przekracza 500 KB";

[PHP] Jak wygenerować losowy ciąg znaków - generowanie hasła

Jeżeli chcemy umieścić na naszej stronie skrypt generujący losowe hasła dla naszych użytkowników, możemy to zrobić na kilka sposobów. Poniżej znajduje się prosty i szybki sposób, który polega na zaszyfrowaniu daty i losowej liczby oraz obcięcie wyniku do wybranej długości. Poniżej przykład zastosowania. Zostanie wygenerowane hasło, które ma 9 znaków.


function haslo($limit)
{
return substr(md5(date("d.m.Y.H.i.s").rand(1,1000000)) , 0 , $limit);
}

$new_pass = haslo(9);

poniedziałek, 7 września 2009

Dlaczego układ na tabelkach jest głupi?

Poniżej znajduje się bardzo interesująca prezentacja tłumacząca dlaczego układ na tabelkach jest głupi :) Zapraszam do lektury!

Dlaczego układ na tabelkach jest głupi?

niedziela, 6 września 2009

Programowanie obiektowe (cz. 9) - klasa sprawdzająca poprawność maski sieciowej - przykład

Wykorzystując poznane do tej pory wiadomości możemy napisać np. klasę, która będzie sprawdzała poprawność maski sieciowej. Przykład takiej klasy znajduje się poniżej. W komentarzach jest opis. Jeżeli coś jest nie jasne to proszę pytać w komentarzach.

<?php
class Netmask {

private $_netmask;

//funkcja zamieniająca numeryczny adres maski na binarny
private function dqtobin($dqin) {
$dq = explode(".",$dqin);
for ($i=0; $i<4 ; $i++) {
//oktet nie może przekraczać 255. Maska to binarny rząd jedynek lub zer
//Do ciągu binarnego pasuje również 256, więc trzeba je wykluczyć
if ($dq[$i] <= 255) {
$bin[$i]=str_pad(decbin($dq[$i]), 8, "0", STR_PAD_LEFT);
}
else
{
throw new Exception ("Oktet numer $i wynosi $dq[$i], więc jest większy niż 255.");
}

}
return implode("",$bin);
}

//sprawdzamy format zapisu adresu i przypisujemy wartość do właściwości _netmask
public function setNetmask($netmask) {
if (!ereg('^([0-9]{1,3}\.){3}[0-9]{1,3}$', $netmask)) {
throw new Exception ("Format maski $netmask jest nieprawidłowy.");
}
else {
$this->_netmask = $netmask;
}
}

//sprawdzamy binarnie czy maska jest prawidłowa. Maska sieciowa to zawsze binarny rząd jedynek
public function checkNetmask(){
$bin_nmask = $this->dqtobin($this->_netmask); //zamiana na adres binarny, wywołanie metody dqtobin
$bin_nmask_valid=rtrim($bin_nmask, "0"); //usuwamy zera z końca adresu binarnego

if (!ereg("0",$bin_nmask_valid) ){ //jeżeli nie ma już żadnych zer w adresie to maska jest ok
echo "Maska $this->_netmask jest poprawna.";
}
else
{
throw new Exception ("Maska $this->_netmask jest nieprawidłowa.");
}
}


}


//objekt
$objNetmask = new Netmask();

$objNetmask-> setNetmask('1.0.0.0');
$objNetmask-> checkNetmask();


?>