| Dodany | 17 sierpnia 2009, 15:04 | Odsłon | 6056 |
| Edytory |
![]()
| Ocena |
(9 głosów)
|
| Kategoria | Silnik | Poziom |
(Dla średnio-zaawansowanych)
|
)
| Rejestracja | |
| 1 | • (Button) clicked
(Live receiver)Start download(GET) from "http://www.strona.pl/index.php?act=reg&nick="+Edittext$( "Edit 1" )+"&pass="+Edittext$( "Edit 2" )
|
| 2 | • (Live receiver)Data received
(Edit 3)Set "text Received$( "Live receiver" )"
|
| 3 | • Left$(Edittext$( "Edit Box" ), 4)="blad"
Informacja, o wystąpieniu błądu
|
| 4 | • Left$(Edittext$( "Edit Box" ), 2)="ok"
Informacja, o powodzeniu
|
| Logowanie | |
| 1 | • Start of frame
(String Parser)Add delimiter "|||"
|
| 2 | • (Button) clicked
(Live receiver)Start download(GET) from "http://www.strona.pl/index.php?act=log&nick="+Edittext$( "Edit 1" )+"&pass="+Edittext$( "Edit 2" )
|
| 3 | • (Live receiver)Data received
• left(Received$( "Live receiver" ),3)<>"|||"
(String Parser)Set source string to Received$( "Live receiver" )"
Set global value A to "Val( Left$(listFirst$( "String Parser" ), Len(listFirst$( "String Parser" ))-3) )"
Set global value A to "Val( Left$(listFirst$( "String Parser" ), Len(listFirst$( "String Parser" ))-3) )"
Set global String A to "Edittext$( "Edit" )"
Set global String B to "Edittext$( "Edit 2")"
|
| 4 | • (Live receiver)Data received
• left(Received$( "Live receiver" ),3)="|||"
Informacja, o błędzie
|
| Zapis | |
| 1 | • Start of frame
(counter)Set counter to Global Value A
|
| 2 | • (Button)clicked
(counter)Set counter to random(300)
|
| 3 | • (Button 2)clicked
(Live receiver)Start download(GET) from "http://www.strona.pl/index.php?act=save&nick="+Global string A+"&pass="+Global String B+"&lvl="+Str$(value("Counter"))
|
| normal @ 23 lipca 2010, 00:34 | ||
| mam taki problem otóż gdy chce sie zalogować to nieważne czy podam dobre czy złe dane to i tak przenosi mnie do następnej klatki.. | ||
| Zax37 @ 15 grudnia 2009, 09:31 | ||
| Już wszystko działa, fajny przykład ; ] | ||
| Zax37 @ 11 grudnia 2009, 12:29 | ||
| Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in... help? XD | ||
| Tymon @ 20 sierpnia 2009, 13:06 | ||
|
1. Jak kto woli, to daje od razu dodatkowy filtr, a modyfikacja zapytania jest szybsza bo można adresować do dowolnego argumentu więc nawet jak będzie potrzeba umieścić kilka zmiennych $a w stringu to nie będę męczył się w łączenie stringu tylko napiszę
Cytat: echo sprintf( "%1$d, %1$d, %1$d", $a );Cytat: $a = intval($a); echo "$a, $a, $a";Cytat: $a = intval($a); echo $a . ', ' . $a . ', ' . $a;Ostatnio edytowane 20 sierpnia 2009, 13:14 przez Tymon
| ||
| Cremmy @ 20 sierpnia 2009, 12:48 | ||
| 1. Czy sprintf() jest lepszy niz zwykle laczenie stringow ('blah'.$zmienna)? 2. Czy intval() jest lepszy niz round()? Zreszta, zgaduje, ze tak bedzie ;o 3. Czy zamiast "INSERT INTO players ( nick, password, level ) VALUES ( '%s', '%s', 1 );" nie byloby lepiej zrobic 'INSERT INTO players ( nick, password, level ) VALUES ( "%s", "%s", 1 );'? Podobno przy " " php doszukuje sie znakow specjalnych i zmiennych, ale nie wiem, jak to dziala przy sptintfie. Hyh, zebralo sie kilku php'owcow i niewtajemniczeni wysiadaja? ;d | ||
| Tymon @ 20 sierpnia 2009, 12:05 | ||
http://gmclan.org/up152_0_Rejestracja_i_logowanie.html
1. Nie ma sensu przechowywać uchwytu do połączenia skoro działamy na jednej bazie.
2. Kontrola błędów.
3. Słyszeliście o switch/case?
4. Sranie ( przepraszam ) kilkoma funkcjami w zmienną nie zabezpieczy jej.
5. Hashowany string nie musi być filtrowany.
6. I tak wybierze tylko jednego użytkownika, po co while?
7. Wystarczy potraktować jako liczba całkowita.
To te błędy które były dla mnie wystarczająco rażące by na nie zwrócić uwagę, btw. niepotrzebny
już ten separator, wynik zwracany jest w formacie ok:{poziom}.
Ostatnio edytowane 20 sierpnia 2009, 12:18 przez Tymon
| ||
| szymat @ 20 sierpnia 2009, 11:59 | ||
|
Andy napisał(a): Lepsze określenie: "dla szczególnie uzdolnionych"
| ||
| Andy @ 20 sierpnia 2009, 11:18 | ||
Lepsze określenie: "dla szczególnie uzdolnionych"
| ||
| szymat @ 19 sierpnia 2009, 23:13 | ||
|
dng napisał(a): Tyle zrozumiałem z waszej gadki.
| ||
| dng @ 19 sierpnia 2009, 22:41 | ||
| O, przy okazji znalazłem błąd w komciach ^^ | ||
| dng @ 19 sierpnia 2009, 22:40 | ||
|
Cremmy i szymat napisał(a): BlarghblarghblarghblarghblarghblarghblarghblarghblarghblarghblarghblarghblarghblargOstatnio edytowane 20 sierpnia 2009, 15:41 przez Fanotherpg
| ||
| szymat @ 18 sierpnia 2009, 19:11 | ||
| Strip_tags a potem: html_real_tags | ||
| Cremmy @ 18 sierpnia 2009, 18:43 | ||
| Tyle, ze striptags przewaznie psuje tekst po dodaniu "<" (znak mniejszosci zwany tez <). A co z addslashes w polaczeniu z htmlspecialchars? | ||
| szymat @ 18 sierpnia 2009, 18:32 | ||
strip_tags i mysql_real_escape_string razem są mocniejsze niż addslashes
| ||
| Cremmy @ 18 sierpnia 2009, 18:24 | ||
| Co do tego: "$nick = strip_tags( mysql_real_escape_string ( $_GET['nick'] ) );" Nie wystarczy "$nick = addslashes ( $_GET['nick'] );"? Html chyba bazie grozny nie jest a addslashes CHYBA pozbedzie sie nieproszonych 'znakow specjalnych'? Pytam, bo specem nie jestem, a tak przewaznie robilem ;o | ||
| szymat @ 18 sierpnia 2009, 17:04 | ||
Andy, przy id bardzo dobrze widziane jest {}Indeksowe + ostatnia tabela:
status; ENUM; '0','1', '1' - Bo jak usuniesz użytkownika to zmieniasz lastid(); wiec przy każdym wybraniu z bazy WHERE status = '1' AND (...), jest to ogromnie przydatne.
No i tak wyglądające zapytanie INSERT błagam! Nie phpmyadminem
zamiast: $q2="INSERT INTO `players` (`nick`, `password`, `level`) VALUES ('$nick', SHA1('$pass'),1)";
to: $q2 = [color=orange]"INSERT INTO players SET
nick = ".$nick.",
password = ".SHA1($pass).",
level = 1"[/color]
Nieco ładniej a przy okazji gdy dodasz jakieś pole to nie trzeba będzie wszędzie szukać i zmieniać.
Widzę, że większość zapytań robione poprzez phpmyadmina
A do tego "$nick=addslashes(trim(mysql_real_escape_string($_GET['nick'])));" o kurcze!
A nie lepiej: "$nick = strip_tags( mysql_real_escape_string ( $_GET['nick'] ) );" - Tak Ci się nie shakerują do bazy
W sumie to tyle zastrzeżeń, a jeżeli ktoś mi chce wmówić, że źle robię, to niech się zastanowi, robię w tym 7 lat :*
Ostatnio edytowane 18 sierpnia 2009, 17:06 przez szymat
| ||
| Andy @ 17 sierpnia 2009, 15:59 | ||
Fakt, zapomniałem o tych "bajerach". I skrypt będzie działał na serwerach z reklamami, ponieważ gdy znamy długość odbieranego tekstu(np. gdy jest błąd podczas zakładania konta sprawdzamy, czy pierwsze 4 znaki = "blad"), natomiast gdy nie znamy długości(level) używam String Parser'a
| ||
| Cremmy @ 17 sierpnia 2009, 15:56 | ||
|
A gdzie addslashes() i inne tego typu bajery przy hasle/nicku? :< W ten sposob to ci baze zhackuja ;o
Swoja droga, taki skrypt nie bedzie dzialal na darmowych serwerach typu cba gdzie do strony dolaczane sa najrozniejsze reklamy, chociaz mozna zalozyc,ze jak ktos robi gre sieciowa, to serwer wlasny i/lub dobry ma.
Do wysylanych danych mozna dolaczyc md5/sha wszystkich danych oraz jakiegos hasla, bedzie mniejsza szansa, ze ktos bedzie probowal oszukiwac.
Ale poza tym... Dobry przyklad dla poczatkujacych ;d
Ostatnio edytowane 17 sierpnia 2009, 15:56 przez Cremmy
| ||
| Andy @ 17 sierpnia 2009, 15:30 | ||
| Przykład - http://andygames.koon.pl/upload/1302829655rejestracja.zip | ||
| Zdunek @ 17 sierpnia 2009, 15:21 | ||
Bardzo fajne...
Przy najbliższej okazji sprawdzę poprawność działania...
| ||