• 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
148 wizyt
pytanie zadane 6 grudnia 2017 w PHP, Symfony, Zend przez DaltooN Początkujący (430 p.)
edycja 6 grudnia 2017 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 6 grudnia 2017 przez Tomek Wilnowski Użytkownik (610 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ź 7 grudnia 2017 przez DaltooN Początkujący (430 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 7 grudnia 2017 przez Chess Nałogowiec (40,210 p.)
Czy nie lepiej wyczyścić cache, cookies, etc.?

Podobne pytania

0 głosów
1 odpowiedź 87 wizyt
0 głosów
1 odpowiedź 55 wizyt
pytanie zadane 8 godziny temu w C i C++ przez Swipeyro Gaduła (4,780 p.)
+1 głos
1 odpowiedź 49 wizyt
pytanie zadane 2 maja 2017 w PHP, Symfony, Zend przez Amiga4ever Użytkownik (520 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.
Ciekawy innych porad? Odwiedź tę stronę!

45,607 zapytań

85,955 odpowiedzi

171,564 komentarzy

22,094 pasjonatów

Przeglądających: 123
Pasjonatów: 0 Gości: 123

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.

...