Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z grą
Forum PHP.pl > Forum > Przedszkole
gierczan
Witam mam problem z kodem w PHP. Robię grę na plikach (*.php) i chodzi o to iż znika mi sesja albo pliki nwm pomóżcie ohno-smiley.gif
  1. <!DOCTYPE html>
  2. <?php
  3. include($_SESSION['user']."/staty_".$_SESSION['user'].".php");
  4. include($_SESSION['user']."/zloto_".$_SESSION['user'].".php");
  5. include("page.php");
  6. ?>
  7. <html>
  8. <head>
  9. <link rel="stylesheet" href="style.css" type="text/css" />
  10. <title><?php echo $title; ?></title>
  11. </head>
  12. <?php
  13. if(isSet($_SESSION['user']))
  14. {
  15. }
  16. else{
  17. header("Location: login.php");
  18. }
  19. ?>
  20. <body>
  21. <?php
  22. $z = $zycie + 1;
  23. $m = $mana;
  24. $zl = $zloto - 150;
  25. file_put_contents($_SESSION['user']."/staty_".$_SESSION['user'].".php", "");
  26. file_put_contents($_SESSION['user']."/zloto_".$_SESSION['user'].".php", "");
  27. $staty = "<"."?"."php"."\n"."$"."zycie"." = ".$z.";"."\n"."$"."mana"." = ".$m.";"."\n"."$"."exp"." = "."0".";"."\n"."?".">";
  28. $file = $_SESSION['user']."/staty_".$SESSION['user'].".php";
  29. $fp = fopen($file, "a+");
  30. flock($fp, 2);
  31. fwrite($fp, $staty);
  32. flock($fp, 3);
  33. fclose($fp);
  34. $zlotos = "<"."?"."php"."\n"."$"."zloto"." = ".$zl."\n"."?".">";
  35. $file = $_SESSION['user']."/zloto_".$SESSION['user'].".php";
  36. $fp = fopen($file, "a+");
  37. flock($fp, 2);
  38. fwrite($fp, $zlotos);
  39. flock($fp, 3);
  40. fclose($fp);
  41. ?>
  42. <h1>Dodano +1 życia dla gracza <?php echo $_SESSION['user']; ?></h1><br>
  43. <small><a href="gra.php">Powrót</a></small>
  44. </body>
  45. </html>
Pyton_000
Cytat
Note:
To use cookie-based sessions, session_start() must be called before outputing anything to the browser.
Scalak
a jeśli sugestia kolegi nie jest zrozumiała to dodaj na początku pliku (przed html):
Kod
<?php ob_start(); ?>


Pozdrawiam
Scalak
Pyton_000
Raczej miałem na myśli żeby DOCTYPE przenieść niżej wink.gif
gierczan
Chodzi o to, że tworzy pliki staty_.php bez nicku
rad11
Sprawdz co zawiera zmienna sesyjna

  1. $_SESSION['user']


ponizsza funkcja

(var_dump)

gierczan
Okej juz naprawilem napisalem $SESSION zamiast $_SESSION
gierczan
Zapraszam do gry
  1. <a href="http://dbfuries.cba.pl/STRONA/index.php" target="_blank">http://dbfuries.cba.pl/STRONA/index.php</a>
rad11
To jeszcze popraw kod ktory wstawiles smile.gif

I radził bym poczytać jeszcze troche o walidacji formularzy bo mozna utworzyc konto o pustym nicku i hasle jak i rowniez moze takich kont byc XXXXX reszty nie chcialo mi sie testowac. smile.gif
gierczan
Okej naprawiłem dobry kod?
  1. if($pole1=="" || $pole2=="" || $pole3=="")
  2. {
  3. header("Location: error.php");
  4. }
  5. else{
  6. //reszta kodu tajemnica haha.gif
  7. }
gierczan
Okej dzisiaj dodam potworów kilka i git. Też dodam wymienianie expa na lvl. W razie sugestii piszcie tongue.gif
kujol
Formularze sprawdzaj za pomocą wyrażeń regularnych i empty()

pl.wikibooks.org/wiki/PHP/Podstawy_wyrażeń_regularnych

edit:
Zarejestrować się chyba nie da wink.gif
gierczan
Okej naprawilem to ten kod przeszkadzal ale nie rozumiem tych regularnych dalbys gotowca?
kujol
Robisz wzór i sprawdzasz czy dane do niego są podobne np.

  1.  
  2. if{
  3. ( preg_match ( '/^[a-zA-
  4. Z0-9\.\-_]+\@[a-zA-
  5. Z0-9\.\-_]+\.[a-z]
  6. {2,4}$/D' , $pole3)) //sprawdza poprawność adresu email
  7. }
  8.  
  9. else{
  10. header( "Location:
  11. error.php" );
  12. }
  13.  
gierczan
cos nie dziala dalej konto utworzono pomyslnie
gierczan
A i mam pytanie bo zrobilem zabezpieczenie zeby nie robic konto o takich samych nickach:
  1. if(is_dir($pole1))
  2. {
  3. header("Location: error.php?error_number=1");
  4. }

I jak zrobic ze jak jest 1 wyswietla sie ze taki nick istnieje a jak 2 to ze taki email jest w uzyciu?
gierczan
Mam hosting na cba wiec opoznienia sa albo kod nie dziala (nie dziala przez te powody). Co robic? Kod wyglada normalnie tak:
  1. <?php
  2. $zloto = 150;
  3. ?>

A po utworzzeniu takiego samego nicku:
  1. <?php
  2. $zloto = 0;
  3. ?><?php
  4. $zloto = 150;
  5. ?>

gierczan
Okej poradzilem sobie jak bede potrzebowal pomocy napisze!
kujol
Walczyć też się nie da i dodał byś może jakiś ranking, bo co z tego że mam 100 exp, jeśli nie wiem który jestem wink.gif
gierczan
Ok dziś dodam wiecej potworow (dziłających) a to z rankingiem to nwm sortowanie bąbelkowe?
rad11
Np. sortowanie. A jesli chce Ci sie to mozesz napisac od nowa ten algorytm sortowania babelkowego.
gierczan
Okej dziala all bo bledy byly juz teraz potworki dodaje. Zapraszam do gry a postacie nie dzialaja bo usunalem. Robcie kont z normalnymi nickami a nie typu "Y" i "a" itp thumbsdownsmileyanim.gif
com
Cytat
Masz niewystarczającą ilość złota

Dodano +1 many dla gracza kalkulator
gierczna
Naprawione
kamilos809
Ja ze swojej strony dodam, że gierka może być dobra, tylko zrób coś z tym, żeby po walce z wilkiem/misiem mógł być łatwy powrót a nie 100 kliknięć "Wróć" bo to odstrasza wink.gif
Z moich pomysłów(mam nadzieje, że pomogą):
-Ranking
-Widok swojego profilu(Avatar, jakiś swój opis, przedmioty które mógłbyś mieć)
-Sklep z bronią
-Skoro miasto, to jakieś możliwości kupna twojego domu w którym możesz odnawiać życie za przespanie się jakiś czas

Taka mała kosmetyka:
Żeby było górne menu, gdzie będzie to co masz na głównej(Twój nick, Energia, Mana, Złoto), a to menu pokazywało się niezależnie od twojego miejsca przebywania smile.gif

Takich tam pomysłów mam wiele jeszcze, ale nie chcę się narzucać biggrin.gif
gierczan
Okej naprawiam gre narazie nic nie działa haha.gif
Nagareteku
Poczytaj też o SMARTY (system szablonów), żeby oddzielić kod PHP od HTML-a, to Ci pomoże w dalszej pracy. Zamiast na plikach, pracuj na bazie danych - MySQL to bardzo prosta, przydatna i, dla gier, priorytetowa sprawa.

Przydatne dla Ciebie będą funkcje i struktury:

isset();
preg_match();
define();
include();
require() ~ require_once();
switch {}
foreach {}

Pamiętaj, że przy tworzeniu gry:

1. Każde dane, wysyłane przez użytkowników, muszą być filtrowane. Brak odpowiednich zapezpieczeń może doprowadzić do katastrofy.

2. Nie tworzy się gier na plikach. Jako początkujący, bez utartych ścieżek, zajmij się bazami danych. To Ci nie zaszkodzi, a już na pewno pomoże w dalszym rozwoju i ćwiczeniach, zarówno samego PHP, jak i tym, jak zarządzasz danymi. Pliki to ostateczność lub przemyślana strategia.

3. Stałe globalne trzyma się w jednym pliku, byś miał do nich bezpośredni dostęp, bez szukania. define(); jest w tym dość pomocne i poręczne.

4. Filtruj i weryfikuj nawet to, co silnik gry robi wewnętrznie. Bez ustalonych wzorów, jakakolwiek zmiana lub nieprzewidziana sytuacja może Ci narobić tylko szkód.

Powodzenia! : )
gierczan
Dzięki.
To że na plikach raczej nie szkodzi za bardzo bo:
- z plik korzysta tylko 1 user (pliki sa blokowane do zapisu),
- sa w php (nie widac kodu).
Baza danych tez dobre rozwiazanie. Wątpie by nastąpił atak a nawet jeśli by było $_GET to wystarczy:
  1. <?php
  2. htmlspecialchars($_GET['costam']);
  3. ?>
gierczan
Jakis kacper sie zarejestrowal, dalem 1000 zlota za free 1 user haha.gif
Kshyhoo
I leczenie nie działa tongue.gif
-Leszcz-
Co do sortowania bąbelkowe jak bd miał dużo graczy się nie sprawdza i jest wolne. Ja polecam qsort, albo sortowań z "dziel i zwycieżaj" raczej bym używał wink.gif
gierczan
Wiem leczenie nie działa dam wszystkim z 10k zycia na start narazie
kujol
Skończyło mi się już te życie smile.gif zdobyłem 3307 złota, pokonałem bota ze 100 razy i co dalej?
Exp jak był 0 tak jest 0 smile.gif
Te "walcz ludzie" to walka z innymi graczami?
gierczan
ok naprawie
gierczan
Ok leczenie działa a walka z ludźmi niedługo (gracze premium będą mieli listę graczy).
kujol

Cytat
ok naprawie


Chyba nie do końca, znów straciłem całe życie, mam ponad 6k złota i nadal 0 expa.
Mówisz, że lista graczy będzie tylko dla posiadaczy premium? smile.gif, z tego co zauważyłem ranking jest podstawową funkcją w każdych grach. Zadaj sobie 1 pytanie: po co ludzie grają w takie gry?, a no dla satysfakcji, zabawy itp.

Ja będąc graczem chce widzieć jak moja pozycja w grze wzrasta, będąc tym faktem zadowolony, na grę poświęcam więcej czasu i tak to się kręci.

Premium to mogą być jakieś bronie, większa moc itp. Za listę graczy nikt Ci chyba nie zapłaci prawdziwymi pieniędzmi smile.gif.
Z ciekawości można zapytać ilu masz ma dzień dzisiejszy zarejestrowanych, oraz grających graczy?
gierczan
sprawdze pisze na szybko nie patrze na orto.
Co do expa dziala razem z leczeniem.
Dam Ci 10k expa za rekompensate.
Masz racje ranking słabe ze sie placi moze symulowanie walk za premium?
gierczan
na firefoxie nie dziala dobrze bo slashe podwaja z / na // jakies pomysly? (double slashes)
kujol
Ja bym zrobił najpierw grafikę, następnie napisał pod to skrypty i przetestował. Po tym puścił grę w obieg wink.gif

gierczan
A tam sie w locie robi wersje beta. Co do rankingu to jak zrobic? arrowheadsmiley.png
sorT?
Turson
ORDER BY/GROUP BY
gierczan
Co do leczenia klikamy:
Wylecz się >> Tak, ulecz mnie
kujol
Zlicz wszystkich graczy i zrób numerki od 1 do tylu ilu jest graczy. Do numerków przypisuj posortowanych graczy. Jeśli gra jest oparta na plikach to musisz użyć jakiejś funkcji sortującej.
gierczan
No wiem to chyba bedzie:
  1. $gracz['1']="kujol";
  2. sort($gracz);

Tak?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.