Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z formularzem w kilku krokach.
Forum PHP.pl > Forum > Przedszkole
hippie
Witam,

Jako, że na forum jestem po raz pierwszy jako zarejestrowany użytkownik, to chciałbym się serdecznie przywitać.

Przechodząc do meritum mojego problemu. Mam spory kłopot z formularzem, uściślając - dwa kłopoty. Uczę się dopiero PHP i muszę napisać dla kolegi pewien skrypt - formularz. Ma być on z założenia w trzech, góra czterech krokach. Pierwszy krok, to nie problem. Problem pojawił się przy kroku drugim i ogólnie kolejny problem przy skrypcie. Pokrótce opiszę:

1. Kod:

  1. <?php
  2. $uploaded = "themes/tmp/".$style."/".$_FILES['plik']['name'];
  3. $upload = $_FILES['plik']['tmp_name'];
  4.  
  5. /* ... */
  6.  
  7. case 2:
  8.        echo('<div id="main">
  9.        <h3>Nagłówek</h3>
  10.        <p>Treść.</p>
  11.        <form enctype="multipart/form-data" action="upload.php?step=2" method="POST">
  12.        <input type="hidden" name="MAX_FILE_SIZE" value="102400" />
  13.        <input name="plik" type="file" />
  14.        <input type="submit" class="button" value="Send" />
  15.        </form>
  16.        </div>');
  17.        if(isset($upload))
  18.        {
  19.            if(is_uploaded_file($upload))
  20.                {
  21.                    move_uploaded_file($upload,$uploaded);
  22.                    echo("<p>Plik <strong>".$_FILES['plik']['name']."</strong> został pomyślnie załadowany na serwer</p>");
  23.                    echo("<script type='text/javascript'>
  24.                    window.location.href='index.php'
  25.                    </script>");
  26.                    exit;
  27.                }
  28.            else
  29.                {
  30.                    echo("<p>Zonk!</p>");
  31.                }
  32.        }
  33.        else
  34.        {
  35.        }
  36.    break;
  37. ?>


Załadowany plik jest pomyślnie wysyłany na serwer, jednakże nie dociera tam gdzie powinien, tj. do themes/tmp/$skrypt, lecz tylko do katalogu tmp. Jaki jest z tym problem?

2. Chcę jakoś zabezpieczyć skrypt, by użytkownik nie mógł, bez przejścia kroku pierwszego przejść do kroku drugiego. Próbowałem to zrobić na sesjach, jednakże nie umiem ich dostatecznie, przez co mi nic nie wyszło.

Z góry dziękuję za pomoc.

Pozdrawiam,
hippie
TheaSiX
spróbuj tak:
  1. <?php
  2. $name = $_FILES["plik"]["tmp_name"];
  3. $uploaded = "themes/tmp/$style/$name";
  4. move_uploaded_file($name,$uploaded);
  5. ?>
hippie
Cytat(TheaSiX @ 8.06.2009, 18:58:28 ) *
spróbuj tak:
  1. <?php
  2. $name = $_FILES["plik"]["tmp_name"];
  3. $uploaded = "themes/tmp/$style/$name";
  4. move_uploaded_file($name,$uploaded);
  5. ?>


Niestety, teraz w ogóle plik nie jest przesyłany.
TheaSiX
dziwne.. dla przykładu pokażę jak ja przesyłam zdjęcia na swojego bloga:

  1. <?php
  2. $uploaddir = "/home/_/ftp/pictures/$gallery_number/";
  3. $name = $_FILES['picture1']['tmp_name'];
  4. $uploadfile = $uploaddir.$name;
  5. move_uploaded_file($_FILES['picture1']['tmp_name'],$uploadfile);
  6. ?>


i nigdy nie miałem z tym problemu. Tworzy folder z kolejnym numerem automatycznie i do niego przesyła zdjęcie..
kefirek
Skąd się bierze zmienna $style na początku ?
Może zmienna $style jest pusta i dlatego tak się dzieje.
hippie
Cytat(kefirek @ 8.06.2009, 19:12:18 ) *
Skąd się bierze zmienna $style na początku ?
Może zmienna $style jest pusta i dlatego tak się dzieje.


Zapomniałem powiedzieć. Zmienna $style nie jest pusta, ponieważ zawiera dane przesłane przez użytkownika metodą POST z poprzedniego kroku formularza.

[EDIT]

Myślę, że wpadłem na pomysł. Jak dobrze pamiętam, wszystko z tablicy $_POST jest kasowane zaraz po wysłaniu formularza?
kefirek
To daj tak i zobacz czy bedzie działac.
  1. <?php
  2. $uploaded = "themes/tmp/".$_POST['style']."/".$_FILES['plik']['name'];
  3. ?>



I daj na początku
  1. <?php
  2. print_r($_POST);
  3. ?>


I zobacz co wyswietli
hippie
No właśnie nic nie wyświetla, bo po prostu tablica $_POST jest pusta. Jak ja na to wcześniej nie wpadłem sciana.gif Tylko teraz jak mam wydobyć tą zmienną?

[EDIT]

Postanowiłem zmienną przetrzymać w ciasteczku. Ustawiam ciasteczko za pomocą setcookie, wprowadzam nową zmienną, podstawiam do $uploaded, ale nie działa. W czym problem?
TheaSiX
a pokaż formularz.. i jak te zmienne są przesyłane.. może wcale nie trzeba robić tego w ciastku. Głównie chodzi o metodę tworzenia $style itp.
erix
Cytat
Jako, że na forum jestem po raz pierwszy jako zarejestrowany użytkownik, to chciałbym się serdecznie przywitać.

A ja proszę o lekturę regulaminu i poprawienie tytułu wątku.
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.