Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]localhost działa, na serwerze już nie
Forum PHP.pl > Forum > Przedszkole
kropamk
Witam.
Mam taki kod w register.php
  1. if($username&&$password&&$mail)
  2. {
  3. $db = new connectDB();
  4. $db->db_connection();
  5.  
  6. $duplicate = mysql_query("SELECT * FROM USERS WHERE login='".strip_tags($_POST['username'])."' || mail='".strip_tags($_POST['mail'])."'");
  7. $num_rows = mysql_num_rows($duplicate);
  8. (W TYM WIERSZU POKAZUJE BŁĄD)
  9. // SPRAWDZA CZY ISTNIEJE LOGIN I E-MAIL
  10. if ($num_rows){
  11. echo '<div id="message">Podana nazwa użytkownika lub e-mail jest już w użyciu! <a href="rejestracja.html">Powrót</a></div>';
  12.  
  13. }

na localhost działa wszystko, natomiast mam serwer na yoyo.pl (darmowy) i zwraca mi błąd w wierszu 8 (zaznaczyłem w kodzie) o nazwie: Parse error: syntax error, unexpected T_LOGICAL_OR in /var/www/sites/yoyo.pl/k/r/kropamk/pmuzyka/register.php on line 32. Nie wiem o co chodzi, potrzebuję pomocy.

Pozdrawiam.
Mackos
Wyjaśnij co chcesz osiągnąć tym OR'em
  1. $duplicate = mysql_query("SELECT * FROM USERS WHERE login='".strip_tags($_POST['username'])."' || mail='".strip_tags($_POST['mail'])."'");


Zrób to w jakiś elegancki sposób:
  1. $user=strip_tags($_POST['username']);
  2. $majl=strip_tags($_POST['mail']);
  3. $duplicate = mysql_query("SELECT * FROM USERS WHERE login='$user' or mail='$mail' ");
Shili
Zapoznaj się też z tematem sql injection. Przyda się, jeśli takiego potworka wrzuciłbyś na produkcję.
kropamk
ok poprawiłem kod na taki:
  1. <?php
  2. //SQL Injection !
  3. function mres($input)
  4. {
  5. {
  6. $input = stripslashes($input);
  7. }
  8. return mysql_real_escape_string($input);
  9. }
  10. // DEKLARACJA ZMIENNYCH Z FORMULARZA
  11. $username = mysql_real_escape_string($_POST['username']);
  12. $password = mysql_real_escape_string($_POST['password']);
  13. $password = md5(mysql_real_escape_string($password));
  14. $password_confirm = mysql_real_escape_string($_POST['password_confirm']);
  15. $password_confirm = md5(mysql_real_escape_string($password_confirm));
  16. $mail = mysql_real_escape_string($_POST['mail']);
  17.  
  18.  
  19.  
  20. // sprawdzenie czy zmienne zostaly wprowadzone
  21. if($username&&$password&&$mail)
  22. {
  23. $db = new connectDB();
  24. $db->db_connection();
  25.  
  26. $duplicate = mysql_query("SELECT * FROM USERS WHERE login='".mysql_real_escape_string($_POST['username'])."' || mail='".mysql_real_escape_string($_POST['mail'])."'");
  27. $num_rows = mysql_num_rows($duplicate);
  28. // SPRAWDZA CZY ISTNIEJE LOGIN I E-MAIL
  29. if ($num_rows){
  30. echo '<div id="message">Podana nazwa użytkownika lub e-mail jest już w użyciu! <a href="rejestracja.html">Powrót</a></div>';
  31. }

i są błędy typu:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /var/www/sites/yoyo.pl/k/r/kropamk/pmuzyka/register.php on line 12

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /var/www/sites/yoyo.pl/k/r/kropamk/pmuzyka/register.php on line 12

i tak dla każdej zadeklarowanej zmiennej....
kropamk
ok już wiem, że mysql_real_escape_string wymaga połączenia z bazą przed rozpoczęciem korzystania z funkcji.

Ale nie znika błąd który tyczy się Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/k/r/kropamk/pmuzyka/register.php on line 31

a wiersż w register.php wygląda tak
  1. <?php
  2. //SQL Injection !
  3. function mres($input)
  4. {
  5. {
  6. $input = stripslashes($input);
  7. }
  8. return mysql_real_escape_string($input);
  9. }
  10.  
  11. $db = new connectDB();
  12. $db->db_connection();
  13.  
  14. // DEKLARACJA ZMIENNYCH Z FORMULARZA
  15. $username = mysql_real_escape_string($_POST['username']);
  16. $password = mysql_real_escape_string($_POST['password']);
  17. $password = md5(mysql_real_escape_string($password));
  18. $password_confirm = mysql_real_escape_string($_POST['password_confirm']);
  19. $password_confirm = md5(mysql_real_escape_string($password_confirm));
  20. $mail = mysql_real_escape_string($_POST['mail']);
  21.  
  22.  
  23.  
  24. // sprawdzenie czy zmienne zostaly wprowadzone
  25. if($username&&$password&&$mail)
  26. {
  27.  
  28.  
  29. $duplicate = mysql_query("SELECT * FROM USERS WHERE login='".mysql_real_escape_string($_POST['username'])."' || mail='".mysql_real_escape_string($_POST['mail'])."'");
  30. $num_rows = mysql_num_rows($duplicate);
  31. // SPRAWDZA CZY ISTNIEJE LOGIN I E-MAIL
  32. if ($num_rows){
  33. echo '<div id="message">Podana nazwa użytkownika lub e-mail jest już w użyciu! <a href="rejestracja.html">Powrót</a></div>';
  34. }
nospor
Cytat
Ale nie znika błąd który tyczy się Warning: mysql_num_rows():

Podano ci już raz link, podam ci go jeszcze raz ja:
Temat: Jak poprawnie zada pytanie
Tu masz napisane jak radzić sobie z takimi błędami. Dojdź do sekcji z mysql_error();
kropamk
Dzięki za pomoc. Po zastosowaniu
  1. mysql_query($sql) or die('BŁĄD:'.mysql_error());
wszystko działa.
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.