Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem ze znalezieniem rozwiązania.
Forum PHP.pl > Forum > Przedszkole
goukan
To mój kawałek kodu na sprawdzanie smsów:
  1. //Sprawdzacz kodu
  2. $handle = fopen("http://dotpay.pl/check_code.php?&check=".$check."&id=".$shop['id']."&code=".$offer[$offerId]['code']."&type=".$type."&del=".$del, 'r');
  3. $status = fgets($handle, 8);
  4. fclose($handle);
  5.  
  6. if(empty($check) or $server == "Brak")
  7. {
  8. echo'Wypełnij wszystkie pola';
  9. break;
  10. }
  11. elseif($status == 0 || preg_match('/[^0-9A-Za-z]/', $check) )
  12. {
  13. $message = "Nieprawidlowy kod.";
  14. }
  15. elseif($status == 1)
  16. {
  17. $message = '<img src="http://upload.wikimedia.org/wikipedia/commons/4/47/Done.png" style="max-width:100px; max-height:100px;"><br>
  18. Kod został wprowadzony poprawnie. '.$offer[$offerId]['item_name'].' zostało dodane na server '.$server.'.';
  19. if($czy_email=="tak") mail($email, 'Zakupiona usługa', $wiadomosc, $headers1);
  20. else echo '';
  21. mysql_query("update serwery set gold='1' where nazwa='$server'");
  22.  
  23. }
  24. else
  25. {
  26. $message = "Błąd w połączeniu z operatorem.";
  27. }
  28.  
  29. if(isset($message))
  30. {
  31. echo '<center>'.$message.'<br><a href="'.$current.$zn.'buy=item'.$offerId.'">Wróć do poprzedniej strony.</a></center>';
  32. $erno = 1;
  33. }


Na tym kodzie powyżej jest taki problem:
Wpisze poprawny kod, ale nie podam nazwy serwera. Pojawia sie komunikat \"uzupelnij wszystkie pola\" i to jest prawidlowo. Jednak ten kod nie powinien sie usuwac podczas tego komunikatu. Wpisuje jeszcze raz ten sam kod, ale tym razem wybieram nazwe serwera i pisze mi \"Kod nie poprawny\" Wyglada to tak jakby podczas wypisywania bledu o nie wpisanych polach, usuwalo kod który zostaje wpisany, a usluga nie zostaje spelniona. Napisałem do supportu i odpisali, że interfejs sprawdzający kody nie powinien znajdować się na samym poczatku sprawdzania kodu, bo to on już sam z siebie usuwa kody z obiegu, więc zrobiłem tak jak jest niżej

  1. //Sprawdzacz kodu
  2. if(empty($check) or $server == "Brak")
  3. {
  4. $message = "Wypełnij wszystkie pola";
  5. }
  6. $handle = fopen("http://dotpay.pl/check_code.php?&check=".$check."&id=".$shop['id']."&code=".$offer[$offerId]['code']."&type=".$type."&del=".$del, 'r');
  7. $status = fgets($handle, 8);
  8. fclose($handle);
  9. if($status == 0 || preg_match('/[^0-9A-Za-z]/', $check) )
  10. {
  11. $message = "Nieprawidlowy kod.";
  12. }
  13. elseif($status == 1)
  14. {
  15. $message = '<img src="http://upload.wikimedia.org/wikipedia/commons/4/47/Done.png" style="max-width:100px; max-height:100px;"><br>
  16. Kod został wprowadzony poprawnie. '.$offer[$offerId]['item_name'].' zostało dodane na server '.$server.'.';
  17. if($czy_email=="tak") mail($email, 'Zakupiona usługa', $wiadomosc, $headers1);
  18. else echo '';
  19. mysql_query("update serwery set gold='1' where nazwa='$server'");
  20.  
  21. }
  22. else
  23. {
  24. $message = "Błąd w połączeniu z operatorem.";
  25. }
  26.  
  27. if(isset($message))
  28. {
  29. echo '<center>'.$message.'<br><a href="'.$current.$zn.'buy=item'.$offerId.'">Wróć do poprzedniej strony.</a></center>';
  30. $erno = 1;
  31. }


Najpierw powinno sprawdzać czy są uzupełnione pola, jeśli nie to wypisuje błąd i skrypt nie powinen dalej się robić. Robiłem też z else, czyli, że jeśli pola są puste to wyświetl błąd, w przeciwnym wypadku i tu ten kawałek kodu z łączeniem z interfejsem. To niestety też nie działało. Macie pomysł jakby to można było zrobić?
Damonsson
No ale musisz przerwać jakoś przecież działanie skryptu jak ktoś nie wypełni pól, daj jakieś exit(); czy return false na końcu tego ifa sprawdzającego.
goukan
exit i return false nie jest możliwe do wprowadzenia BO. Podczas gdy dam exit, to nie pojawi się stopka bo jest includowana na końcu strony, return false tak samo... a nawet nie wyświetla komunikatu
Damonsson
Oj to był przykład tylko, możesz przecież zrobić, znów przykład, tak:

  1. if (niewypełnione) {
  2.  
  3. $x = false;
  4.  
  5. }
  6.  
  7. if ($x) {
  8.  
  9. wykorzystaj kod "$handle = fopen(http..."
  10.  
  11. } else {
  12.  
  13. wyświetl tylko stopkę czy co tam chcesz, bez wykorzystania kodu
  14.  
  15. }
Mackos
Kolego, a upewnij się czy na pewno nie usuwasz tego kodu na poziomie Dotpay, znaczy czy parametr $del na końcu coś wysył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.