Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Sprawdzenie czy dany rekord istnieje w bazie mysql
Forum PHP.pl > Forum > Przedszkole
SzymonGeek
Witam,
Mam problem z skryptem php.
gdyż mam taki kod:
Kod
<?
session_start();

// dane do uzupe³nienia
$id = '';                  # kod referencyjny (ref)
$code = urlencode('xxx');            # pe³ny prefiks kodów bezobslugowych
$strona_bad = 'error.html';    # nazwa strony widocznej po wygasnieciu sesji, wpisaniu z³ego kodu lub po przekroczeniu czasu waznoci kodu
$strona_ok = 'akcept.html';    # nazwa strony widocznej po wpisaniu kodu, gdy kod jest OK i czas waznoci kodu siê nie skoñczy³
// koniec danych do uzupe³nienia
// informacje na temat bazy
  $host = 'mysql';  // nazwa lub numer IP hosta
  $user = 'xxx';  // nazwa uzytkownika
  $password = 'xxx'; // haslo do bazy
  $dbName = 'xxx';  // nazwa bazy danych
// polaczenie oraz wybór bazy
  $polacz = mysql_connect($host, $user, $password) or die(mysql_error());
  $db = mysql_select_db($dbName, $polacz) or die(mysql_error());
//

if($_POST)
{
    $check = $_POST['check'];
    $nick = $_POST['nick'];
    
    $handle = fopen("http://sms.cashbill.pl/backcode_check.php?id=".$id."&code=".$code."&check=".$check."", 'r');
    $status = fgets($handle, 8);
    $czas_zycia = fgets($handle, 24);
    fclose($handle);
    $czas_zycia = trim($czas_zycia);

    if($status == '0')
    {
    // kod nieprawidlowy, przekierowanie na stronê z formularzem
    Header("Location: $strona_bad");        
    die();
    }
    else
    {  
    // kod prawid³owy, przekierowanie na stronê z wykupionym dostepem,
    $_SESSION['tend'] = time() + $czas_zycia;
    $nick = mysql_query("UPDATE konta SET vip='1' WHERE nick='$nick'");
    Header("Location: $strona_ok");
    die();
    }
}

Header("Location: $strona_bad");
die();

?>

I chciałbym aby przed wykonaniem:
Kod
$nick = mysql_query("UPDATE konta SET vip='1' WHERE nick='$nick'");

żeby sprawdzało czy nick istnieje w bazie danych(jeżeli nie to przekierowywuje na strone error.html)
Czy mógł by mi ktoś pomóc ?
Z góry dzięki pozdrawiam wink.gif
in5ane
Dajesz:
  1. $query = mysql_query("SELECT * FROM konta WHERE nick ='$nick';");
  2. $lcount = mysql_num_rows($query);
  3.  
  4. if($count == 0){
  5. echo 'Przepraszamy, ale podany użytkownik nie istnieje w bazie.';
  6. } else {
  7. // Następne czynności
  8. }
SzymonGeek
Mógł byś mi powiedzieć gdzie mam to wstawić albo podać cały kod (łącznie z tym co podałem)
Gdyż jak daje tak:
Kod
    if($status == '0')
    {
    // kod nieprawidlowy, przekierowanie na stronê z formularzem
    Header("Location: $strona_bad");        
    die();
    }
    else
    {  
    // kod prawid³owy, przekierowanie na stronê z wykupionym dostepem,
    $_SESSION['tend'] = time() + $czas_zycia;
    $query = mysql_query("SELECT * FROM konta WHERE nick ='$nick';");
    $lcount = mysql_num_rows($query);
    
    if($count == 0){
      echo 'Przepraszamy, ale podany użytkownik nie istnieje w bazie.';
    } else {
      $nick = mysql_query("UPDATE konta SET vip='1' WHERE nick='$nick'");
    }
    Header("Location: $strona_ok");
    die();
    }
}

to nie działa
in5ane
Wydaje mi się, że to powinno działać.
  1. if($_POST)
  2. {
  3. $check = $_POST['check'];
  4. $nick = $_POST['nick'];
  5.  
  6. $handle = fopen("http://sms.cashbill.pl/backcode_check.php?id=".$id."&code=".$code."&check=".$check."", 'r');
  7. $status = fgets($handle, 8);
  8. $czas_zycia = fgets($handle, 24);
  9. fclose($handle);
  10. $czas_zycia = trim($czas_zycia);
  11.  
  12. if($status == '0')
  13. {
  14. // kod nieprawidlowy, przekierowanie na stron? z formularzem
  15. Header("Location: $strona_bad");
  16. die();
  17. }
  18. else
  19. {
  20. $query = mysql_query("SELECT * FROM konta WHERE nick ='$nick';");
  21. $count = mysql_num_rows($query);
  22. if($count == 0){
  23. echo 'Przepraszamy, ale podany użytkownik nie istnieje w bazie.';
  24. } else {
  25. // Następne czynności
  26. $_SESSION['tend'] = time() + $czas_zycia;
  27. $nick = mysql_query("UPDATE konta SET vip='1' WHERE nick='$nick'");
  28. Header("Location: $strona_ok");
  29. die();
  30. }
  31. }
  32. }
mmmmmmm
Nie działa, bo są pomylone nazwy zmiennych. Raz jest $lcount, a raz $count
markonix
Kod jest źle skonstruowany.
W żadnym wypadku nie powinien działać w ten sposób:
1) Sprawdzenie kodu następuje jak pierwsze, jeżeli będzie chciał poprawić nick to kod będzie już nieaktywny (domyślna konfiguracja w CashBill)
2) Skrypt podatny na SQL Injection...
3) Tworzone jest dużo niepotrzebnych zmiennych, np. po co wynik mysql_query przypisywany jest to zmiennej $nick?
4) Tabela konta nie ma klucza liczbowego? Jeżeli nie to dla pewności spytam czy kolumna nick ma włączone UNIQ?
in5ane
Ja to mu podałem tylko receptę na to, co on chciał. A to, że zrobiłem literówkę w nazwie zmiennej to kolego nie pisz mi, że nie działa, że jest źle zrobione. Tyle chyba możesz sobie poprawić.
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.