Skocz do zawartości
MK-Host.PL

Skrypt.

Polecane posty

I jeszcz ma wróżyć jaki silnik, nazwa bazy oraz tabel i kolumn :)

Kurcze to jest 5 minut pracy (wraz z założeniem bazy danych :) )

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

I jeszcz ma wróżyć jaki silnik, nazwa bazy oraz tabel i kolumn :)

Kurcze to jest 5 minut pracy (wraz z założeniem bazy danych :) )

 

tak samo jak napisanie bloga trwa 15 minut :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Sorki za post pod postem :)

 

Zabezpieczyłem Ci to przed spanbotami narzędziem reCAPTCHA

 

Utwórz bazę tabele w wybranej bazie danych:

CREATE TABLE test(

id INT( 11 ) NOT NULL AUTO_INCREMENT ,
imie VARCHAR( 30 ) NOT NULL DEFAULT  '',
email VARCHAR( 50 ) NOT NULL DEFAULT  '',
gg VARCHAR( 12 ) NOT NULL DEFAULT  '',
PRIMARY KEY ( id )
) 

wejdź na:

http://www.google.com/recaptcha/whyrecaptcha

 

Utwórz konto lub zaloguj się jak na google.pl i utwórz kod wklej go w zmienne index.php raczej sobie poradzisz :)

 

skrypt.zip

 

Pozdro

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Postanowiłem sobie przeanalizować ten kod (tak edukacyjnie, może znów wezmę się za php?)

 

htmlspecialchars(stripslashes(strip_tags(trim($_POST["email"]))), ENT_QUOTES);

 

Mógłbyś mi dokładnie wytłumaczyć o co w tym chodzi? obstawiam że to jest jakieś zabezpieczenie przeciwko SQLinjection, ale byłoby mi miło jakbyś to wytłumaczył po kolei;)

Czemu varchar na gg? Przecież to same cyferki...

Mnie w technikum uczyli, że takie rzeczy jak numery telefonu, pesele itp. mimo że są zmiennymi zawierającymi same cyfry to nie powinno się używać w nich zmiennych liczbowych, ponieważ nie wykonuje się na nich żadnych obliczeń itp itd i lepiej zachować je w postaci stringu. (przynajmniej tak mi się kojarzy powód) ;)

 

Pozdr

Kszysiu

Edytowano przez Kszysiu (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
htmlspecialchars(stripslashes(strip_tags(trim($_POST["email"]))), ENT_QUOTES);

Ciekawe, ciekawe...

 

Wszędzie gdzie widziałem dawali jedynie mysql_real_escape_string() i sam tego używam. Nigdy nie było problemu...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 


Ciekawe, ciekawe...



Wszędzie gdzie widziałem dawali jedynie mysql_real_escape_string() i sam tego używam. Nigdy nie było problemu...



Ta funkcja nie działa przypadkiem tylko na jakieś znaki obecne w MySQL? (nie znam tej funkcji). Przypadkiem bez addslashes sam kod PHP nie może być narażony na atak?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jeśli chodzi o filtrowanie w tym przypadku email, to poprawnie powinno być sprawdzenie czy email jest rzeczywiście emailem.

 

Jeśli chodzi o przechowywanie np. numeru gg to tak jak kolega wyżej napisał, użycie varchar jest jak najbardziej poprawne.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jeśli chodzi o przechowywanie np. numeru gg to tak jak kolega wyżej napisał, użycie varchar jest jak najbardziej poprawne.

 

Nie do końca. Numery GG mają niezmienną wartość liczbową, więc stosowanie varchar dobre nie jest.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 

Nie do końca. Numery GG mają niezmienną wartość liczbową, więc stosowanie varchar dobre nie jest.

 

Zapis jako typ liczbowy jako swojego rodzaju optymalizacja jest na pewno ok jeśli mamy zagwarantowane, że "numer" gg zawsze może być reprezentowany za pomocą liczby. Tylko czy to jest wartość liczbowa, to bym polemizował. Raczej to jest zbiór znaków, gdzie zakres wartości pojedynczego znaku akurat mieści się przedziale cyfr.

Edytowano przez elcct (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zapis jako typ liczbowy jako swojego rodzaju optymalizacja jest na pewno ok jeśli mamy zagwarantowane, że "numer" gg zawsze może być reprezentowany za pomocą liczby. Tylko czy to jest wartość liczbowa, to bym polemizował. Raczej to jest zbiór znaków, gdzie zakres wartości pojedynczego znaku akurat mieści się przedziale cyfr.

 

Absolutnie nie. To jest wartość liczbowa, chyba, że się coś zmieniło, a ja nie wiem. Numery dalej mają postać: 123456? To ja takie pamiętam.

 

Dlaczego nie varchar? Podstawy dobrego projektowania baz danych /takie pierdoły, ale mają znaczenie, czasami ogromne/:

- varchar zajmuje więcej miejsca

- indexy nie będą optymalne

- odpada "samo walidacja" danych - typ danych nie jest zgodny z przechowywaną w nim wartością

- generatory ORMów utworzą Ci błędną składową /string zamiast integera/.

 

W przypadku ogólnego przechowywania wartości liczbowych w polu varchar tych "przeciw" jest jeszcze więcej.

 

Co innego numery telefonów, etc.

 

Podejrzewam, że to MySQL - ciekawa lektura.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 

 

Co innego numery telefonów, etc.

Dla mnie numer gg i telefonu to praktycznie to samo - składa się z innej ilości cyfr i tyle.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dla mnie numer gg i telefonu to praktycznie to samo - składa się z innej ilości cyfr i tyle.

 

Nie do końca, bo numer telefonu ma - przyjęty w wielu krajach inny - format, a numer GG nie. Numer telefonu już można wcisnąc jako varchar jeśli chce się zachować formatowanie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Sorki czepiacie się mnie tego że mam inaczej skonfugurowany MySQL + Apache 2

 

- varchar zajmuje więcej miejsca

 

Od kiedy ? Pomyśl jak mu wpisze 54564654616541324541654215641521 a jak więcej zajmie miejsca ?

 

@pedro84 lubię Cię za to że starasz się pomagać innym ale czemu mu tego sam nie napisałeś, okey może koleś gimbaza jak sam się czegoś nie nauczy to nie będzie umiał. Ale jednak działa skrypt i jest OK :)

 

co do

htmlspecialchars(stripslashes(strip_tags(trim($_POST["email"]))), ENT_QUOTES);

Jak najbardziej powinno być tak dlaczego ? Jak gość ma wyświetlanie rekordów z bazy danych i ktoś mu wpisze takie coś

<script type="text/javascript">


setTimeout(function(){
  window.location.href = "http://www.google.pl";
},
5000);
</script>

Własnie to pomaga :)

Nie że się chwalę ale za takie filtrowanie formularzy nie miałbym Certyfikatu Europejskiego :)

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×