![]() |
![]() ![]() |
![]() |
![]()
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 ![]() 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)."' ![]() 3 skoro wiem że zmienna którą dodaje edytuje jest liczbą muszę używać mysql_real_escape_string ![]() 4. Na wielu podstronach normalnie wyświetlały by się NOTICE ale że mam wył ich wyświetlanie nie pojawiaja się to bład ![]() 5. chciałbym zrobić wyszukiwanie użytkownika po przez wpisanie w formularzu jego nicka jak zrobić to najlepiej , bezpiecznie ![]() 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.. ![]() |
|
|
![]()
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. -------------------- Moja gra - scraby.io
|
|
|
![]()
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ś
![]() 3) no tak ale jeśli zmienna jest z sesji pobierana ![]() ![]() jest jakaś różnica pomiędzy abs a intval ![]() ![]() nowe pytanie po zalogowaniu ustawiam np SESSION['zalogowany'] = 1 , SESSION['uzytkownik'] = $id; to błąd że nie używam session_register ![]() 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 ? ![]() |
|
|
![]()
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 ![]() 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 ![]() 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 ;)
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
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 ![]() 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 ? ![]() A stworzyłeś modele? ![]() 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. -------------------- Moja gra - scraby.io
|
|
|
![]()
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
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 01:50 |