• 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.

Object Storage Arubacloud
0 głosów
218 wizyt
pytanie zadane 6 grudnia 2017 w PHP 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 Szeryf (76,710 p.)
Czy nie lepiej wyczyścić cache, cookies, etc.?

Podobne pytania

0 głosów
1 odpowiedź 306 wizyt
pytanie zadane 19 lutego 2018 w C i C++ przez Hiskiel Pasjonat (22,830 p.)
0 głosów
1 odpowiedź 497 wizyt
+1 głos
1 odpowiedź 148 wizyt
pytanie zadane 2 maja 2017 w PHP przez Amiga4ever Użytkownik (570 p.)

92,538 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,923 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...