• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Instrukcja warunkowa wykonuje się w połowie.

0 głosów
139 wizyt
pytanie zadane 5 dni temu w PHP, Symfony, Zend przez DaltooN Początkujący (410 p.)
edycja 5 dni temu przez DaltooN

Witam!

Piszę swój serwis i mam problem z pewną instrukcją warunkową. Mianowicie tą:
 

if(isset($_POST['filesSubmit']))
        {
            if(is_uploaded_file($_FILES['gamefiles']['tmp_name']))
            {
                $gamefiles = $_FILES['gamefiles'];
                $filename = $_FILES['gamefiles']['name'];
                $extension = pathinfo($filename, PATHINFO_EXTENSION); //Get uploaded file extension.
                echo $extension;
                if($extension==="zip" || $extension==="rar" || $extension==="exe")
                {
                    $codeGenerated = false;
                    while($codeGenerated === false)
                    {
                        $codeForGameFiles = substr(sha1(rand(1,100000)),0,5);
                        $sql = $connect->query(sprintf("SELECT * FROM game WHERE downloadLink='%s'",
                        mysqli_real_escape_string($connect, $codeForGameFiles)));
                        $numrows = $sql->num_rows;
                        if($numrows==0)
                        {
                            $sql = $connect->query(sprintf("SELECT `gametitle` FROM game WHERE id='%s'",
                            mysqli_real_escape_string($connect, $_GET['id'])));
                            $table = $sql->fetch_assoc();
                            echo "Zaraz zobaczę czy są foldery /n";
                            if(!file_exists("gamefiles/".$table['gametitle']))
                            {
                                mkdir("gamefiles/".$table['gametitle'], 0777, true);
                                mkdir("gamefiles/".$table['gametitle']."/tmp", 0777, true);
                                move_uploaded_file($gamefiles['tmp_name'], "gamesfiles/".$table['gametitle']."/tmp/".$gamefiles['tmp_name'].".".$extension);
                                $_SESSION['success'] = "Pliki zostały przesłane pomyślnie. Obecnie trwa ich weryfikacja. Jeżeli zostanie ona zakończona pomyślnie, pliki automatycznie zostaną udostępnione do pobrania.";
                                $codeGenerated = true;
                            }
                            else
                            {
                                $currentFiles = glob("gamesfiles/".$table['gametitle']."/tmp/*"); //Get all files in this folder.
                                foreach ($currentFiles as $file) 
                                {
                                    if(is_file($file))
                                    {
                                        unlink($file);
                                    }
                                }
                                move_uploaded_file($gamefiles['tmp_name'], "gamesfiles/".$table['gametitle']."/tmp/".$gamefiles['tmp_name'].".".$extension);
                                $_SESSION['success'] = "Pliki zostały przesłane pomyślnie..";
                                $codeGenerated = true;
                            }
                        }
                    }
                }
                else
                {
                    $_SESSION['error'] = "Przesyłane pliki, mogą mieć wyłącznie rozszerzenia .zip, .rar lub .exe";
                }
            }
        }

Problem jest następujący: gdy spróbuję dodać plik z rozszerzeniem innym niż exe, zip i rar to instrukcja wykonuje się i pokazuje informacje "Przesyłane pliki, mogą mieć wyłącznie rozszerzenia .zip, .rar lub .exe", lecz gdy przesyłam pliki o poprawnym formacie, to instrukcja już się nie wykonuje. Próbowałem sprawdzić, w którym miejscu w kodzie jest błąd dodając po prostu echo "INFO" ale pokazywało się tylko wtedy, gdy przesyłałem plik ze złym rozszerzeniem. Ktoś wie gdzie może być byk?

komentarz 5 dni temu przez Tomek Wilnowski Użytkownik (590 p.)
Spróbuj prze debugować tą funkcję. Po za tym profesjonalistą nie jestem, ale wydaje mi się że ten kod jest bardzo napaćkany. Spróbuj ustawić jedną flagę na true, a nie pomyślne sprawdzenie jakiejś weryfikacji spowoduje przestawienie jej na false co sprawi, że nie będziesz musiał zagnieżdżać tak if-a w kolejnym if-ie.

1 odpowiedź

0 głosów
odpowiedź 4 dni temu przez DaltooN Początkujący (410 p.)
 
Najlepsza

Informacja dla każdego, który ma podobne problemy z niewykonującym się, dobrze napisanym kodem.

Problem nie leżał po stronie kodu, lecz po stronie przeglądarki. W momencie, gdy stronę uruchomiłem w trybie incognito lub kolejnego dnia, cały kod wykonywał się poprawnie, mimo że w kodzie nie było zmienione nic. Sytuacja wygląda tak samo na Chrome i Firefox. Nie wiem dlaczego tak się dzieje, tym bardziej na Firefox'ie, który ma tyle udogodnień dla developerów.

komentarz 4 dni temu przez Chess Nałogowiec (38,590 p.)
Czy nie lepiej wyczyścić cache, cookies, etc.?

Podobne pytania

0 głosów
1 odpowiedź 78 wizyt
+1 głos
1 odpowiedź 48 wizyt
pytanie zadane 2 maja w PHP, Symfony, Zend przez Amiga4ever Użytkownik (520 p.)
0 głosów
2 odpowiedzi 120 wizyt
pytanie zadane 25 maja 2015 w PHP, Symfony, Zend przez ArturB Mądrala (6,080 p.)

42,402 zapytań

81,696 odpowiedzi

162,147 komentarzy

20,342 pasjonatów

Przeglądających: 115
Pasjonatów: 4 Gości: 111

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...