![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%) ![]() ![]() |
witam mam parę pytań a nie chciałem kilku tematu zakładać.
1. chciałbym na swojej stronie zrobić liste online osób pytanie jak.. wpadłem na pomysł aby w tabeli gdzie mam dane o koncie dodać pole w którym była by data unix ost odświeżenia przez tego użytkownika strony i np w podstronie online.php wyświetlał bym uzytkowników którzy odwiedzili jaką kolwiek stronę w ciągu np ost 15min. wpadłem też na pomysł aby w oddzielnej tabeli przetrzymywać użytkoników online (tak abym nie musiał wyszukiwać rekordów w tabeli gdzie może być np kilka , kilkanaście tysięcy użytkowników, na chwile obecną mam 150) ALE.. to by si wiązało z tym że przy każdym odswieżeniu witryny musiał by sprawdzać czy już jest w tek tabeli a jeśli nie to dodawać rekord jeśli tak update czyli wiąże się to z 2 zapytaniami . które rozwiązanie jest lepsze , wydajniejsze (IMG:style_emoticons/default/questionmark.gif) 2 sprawa do tej pory gdy chciałem edytować jakieś dane użytkownika np coś dodać odjąć wpierw pobierałem jego dane poprzez select następnie dodawałem /odejmowałem i robiłem update to jest lepsze rozwiązanie czy może bez selecta od razu np `gold`+'".$nagroda."' lub `gold`+'".mysql_real_escape_string($nagroda)."' (IMG:style_emoticons/default/questionmark.gif) 3 skoro wiem że zmienna którą dodaje edytuje jest liczbą muszę używać mysql_real_escape_string (IMG:style_emoticons/default/questionmark.gif) 4. Na wielu podstronach normalnie wyświetlały by się NOTICE ale że mam wył ich wyświetlanie nie pojawiaja się to bład (IMG:style_emoticons/default/questionmark.gif) mogę je zlekceważyć czy najlepiej się ich pozbyć ? 5. chciałbym zrobić wyszukiwanie użytkownika po przez wpisanie w formularzu jego nicka jak zrobić to najlepiej , bezpiecznie (IMG:style_emoticons/default/questionmark.gif) to chyba tyle , jeśli będę miał jakieś pytania dodam jeszcze w tym temacie . z góry dziękuje za pomoc i o ile to możliwe proszę nie odsyłać mnie na angielskie strony.. (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
1. Session Handler na bazię - gdzieś na wortalu jest chyba tego opis.
2. No tak, możesz robić zapytanie:
3. No właśnie, chodzi o to, że stosuje się mysql_real_escape_string bo to user wprowadza te dane do zapytania i to on jest tym który może zmienić tą zmienną
Możesz w %zmienna_php% dać np. Kod 1 OR 1=1 Możesz także dać Kod 1 OR 1=2 UNION SELECT * FROM foo WHERE userLogin = 'luq' Tak więc ja bym filtrował takie zmienne poprzez: 4. Dobry programista nie chowa, warningów/noticów etc. tylko się ich pozbywa. 5. Filtrować wejście i wstawiać do zapytania no nic innego nie wymyślisz. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%) ![]() ![]() |
hmm session handler wygląda mi na skomplikowane :|.. zapewne chodzi ci o linka -> http://wortal.php.pl/wortal/artykuly/php/a...handler_czesc_i sam go znalazłem no i jeszcze na innym forum gdzie też umieściłeś (IMG:style_emoticons/default/smile.gif) .
3) no tak ale jeśli zmienna jest z sesji pobierana (IMG:style_emoticons/default/questionmark.gif) np id usera albo zmienna pochodzi z innej tabeli i na jej zawartośc nie miał user podglądu/edycji to też mam używać(IMG:style_emoticons/default/questionmark.gif) jest jakaś różnica pomiędzy abs a intval (IMG:style_emoticons/default/questionmark.gif) oprócz tego że abs zamienia z ujemnych na dodatnie (IMG:style_emoticons/default/questionmark.gif) nowe pytanie po zalogowaniu ustawiam np SESSION['zalogowany'] = 1 , SESSION['uzytkownik'] = $id; to błąd że nie używam session_register (IMG:style_emoticons/default/questionmark.gif) i pytanie trochę z innej beczki .. parę dni temu szukając łamacza tokenów trafiłem na Twoją strone , skrypt jest super i działa ale mam pewien problem.. token zamieniany jest na literki (X,Y) ale nie wyświetla mi poniżej w 'normalnej' postaci np xxxxsdfsd , czym to jest spowodowane ? (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
ad1) INSERT INTO tabela (id_usera, czas) VALUES ($id_usera, $czas) ON DUPLICATE KEY UPDATE czas = $time
ad2) UPDATE tabela SET pole = pole + $ileś WHERE id = $jakis Przy czym najlepiej jednak pobierać, jesli masz warunki na pola ustawione w stylu "wartość pola nie może zejść poniżej 0" ad3) Dla pewności zawsze warto. Używanie przykładowo ctype lub filter_var dobrze już chronią, ale wszystko co dostajesz od usera należy traktować z nieufnością. ad4) Dobry programista stara się wykluczać wszelkie niedoskonałości zamiast je maskować. Choćby dlatego, że zamaskowane w jednym miejscu mogą wpłynąć na działanie w innym miejscu skryptu w sposób jakiego nie przewidzieliśmy. ad5) Aby zrobić to bezpiecznie musisz: po pierwsze - walidować zmienne z formularza, po drugie - walidować zmienne z formularza i po trzecie, choć wcale nie najmniej ważne - walidować zmienne z formularza (IMG:style_emoticons/default/smile.gif) ad3) Nigdy nie masz pewności CO i w jakiej postaci jest trzymane w bazie lub sesji i w jakiej formie te dane dostaniesz. Dlatego to także powinno być w jakiś sposób kontrolowane. abs - wartość absolutna liczby intval - konwersja zmiennej do postaci liczbowej Różnica jest taka, że abs "usuwa" znak z liczb jeśli są ujemne, ale nie poradzi sobie w sytuacji, gdy ktoś mu za liczbę walnie "Ala ma kota". Zobacz co zrobi (IMG:style_emoticons/default/winksmiley.jpg) A intval będzie starał w tym ostatnim przypadku skonwertować zmienną do liczby. Co do session_register, to funkcja ta jest już od wersji PHP 5.3 uznana za przestarzałą. Nie powinno się jej używać. Twoja wersja jest prawidłowa.
Powód edycji: [thek]: Nowe pytania się pojawiły ;)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%) ![]() ![]() |
hmm wielkie dzięki za pomoc ale co do tego abs się nie zgodzę.
wynik: 00 (IMG:style_emoticons/default/smile.gif) aha i zapomniałem .. co do ad2 - wszystkie pola liczbowe mam ustawione na UNSIGNED , czyli rozumiem że pozostawić tak jak do tej pory miałem czyli wpierw selecy następnie operacji i update ? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
i pytanie trochę z innej beczki .. parę dni temu szukając łamacza tokenów trafiłem na Twoją strone , skrypt jest super i działa ale mam pewien problem.. token zamieniany jest na literki (X,Y) ale nie wyświetla mi poniżej w 'normalnej' postaci np xxxxsdfsd , czym to jest spowodowane ? (IMG:style_emoticons/default/smile.gif) A stworzyłeś modele? (IMG:style_emoticons/default/winksmiley.jpg) Wszystko jest opisane na blogu, jeśli dalej będziesz miał jakiś problem to pisz na PW or email. Cytat co do ad2 - wszystkie pola liczbowe mam ustawione na UNSIGNED , czyli rozumiem że pozostawić tak jak do tej pory miałem czyli wpierw selecy następnie operacji i update ? A co niby zmienia pole typu UNSIGNET INT? Od razu UPDATE`a wal. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%) ![]() ![]() |
ok poczytam ale później. wracając do tematu czy do filatracji nazwy użytkownika wystarczą te 2 funkcje - htmlspecialchars oraz addslashes (IMG:style_emoticons/default/questionmark.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 13:09 |