Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP] Baza czy kod? Pomocy webmasterzy!
Forum PHP.pl > Forum > Przedszkole
lestat1313
Witajcie mam taki problem:

mam taki plik :

  1. <?php
  2. require('dbconnect.php');
  3. $a = "SELECT * FROM `uzytkownicy` WHERE `id`='".$_SESSION['user_id']."'";
  4. $a = mysql_query($a);
  5. if ($_SESSION['user_id'] and $aa['hash'] == $_SESSION['hash'] and $_SERVER['REMOTE_ADDR'] == $aa['ost_ip']){
  6. $aktywny = time()+60*2;
  7. $ip = $_SERVER['REMOTE_ADDR'];
  8. $online="UPDATE uzytkownicy SET ost_ip = '$ip', ost_aktywny = '$aktywny' WHERE id=$_SESSION[user_id]";
  9. mysql_query($online) or die("Wystapił blad");
  10. }
  11. else {
  12. echo "eeeee ";
  13. /*
  14. session_start();
  15. session_unset();
  16. session_destroy();
  17. */
  18. }
  19. ?>


i po wrzuceniu go na serwer wyskakuje mi problem :

Cytat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/t/e/testowo1313/zalogowany.php on line 6
eeeee
Parse error: syntax error, unexpected T_STRING, expecting '(' in /var/www/sites/yoyo.pl/t/e/testowo1313/funkcje/genhash.php on line 2


Nie mam pojęcia czy jest to jakiś problem bazy danych, lub (bardziej prawdopodobne) błedu w kodzie ;/
Zamieszczałem podobny przypadek na forum, umieściłem korekty lecz to nie pomaga.
Czy ktoś jest w sanie mi pomóc ?
CuteOne
Brak wyników z bazy - innymi słowy użytkownik o podanym w sesji id nie istnieje lub nie uzyskałeś połączenia z bazą
lestat1313
Bo jest to jeden z plików gry(silnika) php.
Czy ktoś jest w stanie powiedzieć mi jak to zmienić by się normalnie można było logować (rejestrować) ale najpierw jak się pozbyć tych błędów i uruchomić gre.
sada
dodaj przed pobraniem z bazy warunek

  1. if(isset($_SESSION['user_id']))


nie zapomnij o klamrach


tym warunkiem możesz też sprawdzić czy jesteś zalogowany

może plik z danymi logowania na serwer masz w innym katalogu a wtedy

  1. require('./katalog/dbconnect.php');
lestat1313
Tak mi wpadło na myśl że może jest tu błąd i on powoduje tam także problem:

  1. <?php
  2. function generate Hash()
  3. {4.'return md5(time() * rand())';
  4. }
  5. ?>



(ps. nic nie pomogło zapytanie te przed pobraniem z bazy)
CuteOne
Błąd leży w bazie, połączeniu z bazą lub sesji i w tym czymś co pkazałeś

  1. function generateHash()
  2. {
  3. return md5(time() * rand());
  4. }



ps. sam pisałeś ten kod ?
lestat1313
Nie pisałem tego kodu, dlatego mam aż tak wiele problemów.
Jest to silnik gry który miałem naprawić i się tego zobowiązełem (nie wiedziałem że jest aż tak źle)

Czy mógłbyć zaprezentować jak w praktyce powinien wyglądać ten poprawiony plik i co jeszcze powinienem zmienić ?
sada
Ten warunek nie miał pomóc, a wyeliminować niektóre hipotezy
lestat1313
Cytat(sada @ 10.01.2011, 19:08:57 ) *
Ten warunek nie miał pomóc, a wyeliminować niektóre hipotezy


Przepraszam, nie wiedziałem. Ale nie pomógł.
CuteOne
  1.  
  2. require('dbconnect.php');
  3. $query = mysql_query("SELECT * FROM `uzytkownicy`");
  4. $row = mysql_fetch_array($query);
  5.  
  6. echo '<pre>';
  7. print_r($row);
  8. echo '</pre>';
  9.  
  10. echo '<br>';
  11. echo '<pre>';
  12. print_r($_SESSION);
  13. echo '</pre>';
ciekawskiii
Pokaz plik gdzie zapisujesz do sesji id_user, przy logowaniu pewnie jest blad
lestat1313
Zmieniłem (nie wiem czy o to chodziło, jeśli nie to przepraszam ;()

Plik zalogowany.php wygląda teraz tak :

  1. <?php
  2. require('dbconnect.php');
  3. $query = mysql_query("SELECT * FROM `uzytkownicy`");
  4. $row = mysql_fetch_array($query);
  5. echo '<pre>';
  6. print_r($row);
  7. echo '</pre>';
  8. echo '<br>';
  9. echo '<pre>';
  10. print_r($_SESSION);
  11. echo '</pre>';
  12. if ($_SESSION['user_id'] and $aa['hash'] == $_SESSION['hash'] and $_SERVER['REMOTE_ADDR'] == $aa['ost_ip']){
  13. $aktywny = time()+60*2;
  14. $ip = $_SERVER['REMOTE_ADDR'];
  15. $online="UPDATE uzytkownicy SET ost_ip = '$ip', ost_aktywny = '$aktywny' WHERE id=$_SESSION[user_id]";
  16. mysql_query($online) or die("Wystapił blad");
  17. }
  18. else {
  19. echo "eeeee ";
  20. /*
  21. session_start();
  22. session_unset();
  23. session_destroy();
  24. */
  25. }
  26. ?>


a błedy pojawiające się to :
Cytat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/t/e/testowo1313/zalogowany.php on line 5




Array
(
)

eeeee
Parse error: syntax error, unexpected T_STRING, expecting '(' in /var/www/sites/yoyo.pl/t/e/testowo1313/funkcje/genhash.php on line 2
Hoku
  1. $a = "SELECT * FROM `uzytkownicy` WHERE `id`='".$_SESSION['user_id']."'";
  2. $a = mysql_query($a);

1 zrzut da ci zapytanie sprawdź sobie w phpadmin np. czy coś zwróci;)
2gi da ci typ wyniku oraz wynik;
var_dump prawdę ci powie;
zapewne tego ID tam nie ma w bazie.

ps. od kiedy można używać spacji w nazwie funkcji o.O?

ps2. myślisz że coś tak skomplikowanego jak silnik gry jesteś w stanie napisać?
masz problem ze zrozumieniem błędów które są dość dokładnie opisane.
a tu jeszcze dojdą bugi które błędów nie zwracają a są.
takie projekty to wyższa szkoła jazdy:
optymalizacja na wysokim poziomie
sprawienie, że dane procesy wyglądają na zachodzące w czasie rzeczywistym.
bezpieczeństwo.
sada
z tego wynika , że tablica sesji jest pusta.
Pokaż skrypt gdzie ją tworzysz czyli gdzie jest coś takiego:

$_SESSION['klucz']=.........

jeszcze raz spytam czy plik połączenia z bazą jest w tym katologu co w skrypcie
CuteOne
Tak jak mówiłem... brak połączenia z bazą oraz brak sesji lepiej poducz się PHP bo daleko tak nie zajedziesz

UP: jak by nie był dostał by fatal error ...
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.