Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Formularz POST - odświeżanie strony, zablokowanie dodawania duplikatów
Forum PHP.pl > Forum > Przedszkole
xajart
Mam problem z rozwiązaniem tego i mam wielką prośbę do was o pomoc z tym.


Mam formularz do uploadowania plików graficznych. Plikom przy uploadowaniu zmieniana jest nazwa na "index.rozszerzenie", gdzie index to jest identyfikator z bazy danych.
Proces wyglada tak użytkownik sobie wybiera plik który chce uploadować, skrypt dodaje do BD nowy wpis, pobierany jest identyfikator tego wpisu i zmieniana jest nazwa pliku, następnie plik wędruje do odpowiedniego katalogu. 


Niestety kiedy odświeże okno plik znowu ładowany jest da katalogu pod inna nazwą (czyli nowym identyfikatorem). Nie wiem jak to zrobić by sprawdzać czy taki plik już nie istnieje. 

Mogłbym wrzucać pliki na serwer w oryginalnych nazwach wtedy za pomocą selecta bym sprawdził czy w bazie danych istnieje taka nazwa, niestety osoba dla której jest ten skrypt robiony chciała aby na serwerze pliki były hronologicznie uporządkowane wg identyfikatorów - wiec takie rozwiązanie odpada. Wieć nie mam jak sprawdzić czy w bazie danych taki plik został już dodany. Czy można to jakoś inaczej rozwiazać i jeżeli tak to jak? Myślałem by sprawdzać na podstawie datatime uploadowanego pliku, ale dajmy na to że ustawie jakiś limit czasu a użytkownik po dłuższym czasie odświezy okno to znowu doda ten sam plik do BD. 

Jak to rozwiązać czy stworzyc dodatkowa kolumnę w BD i zapisywać w niej oryginalna nazwe uploadowanego pliku i na tej podstawie sprawdzać - proszę o jakąś radę bo nie mam pojęcia jak to rozwiązać.

KuKa
Możesz zrobić tak jak napisałeś z dodatkową kolumną, albo po poprawnym uplodowaniu pliku przekierować użytkownika na inna stronę za pomocą header()... i wtedy po odświeżeniu nic się nie stanie.
potreb
lub dać dla pola w tabeli klucz unique, wtedy nie zapisze AND if(!zapytanie) nie wysyła pliku.
MateuszS
a moze sesje sie na cos zdadza. Tam gdzie masz formularz daj

  1. session_start(); // w 1szej linijce
  2.  
  3. $_SESSION['kontrolna']=1;


a tam gdzie masz plik wykonywalny php


  1. session_start(); //w pierwszej linii
  2.  
  3. if($_SESSION['kontrolna']==1) {
  4. // uploaduj
  5. $_SESSION['kontrolna']=2;
  6. } else {
  7. header('Location: strona.php');
  8. }
xajart
Dziękuje wam wasza pomoc była przydatna, co do sesji to przychodził mi taki pomysł do głowy ale nie wiedziałem jak go zastosować. Co do tego Unique to muszę o tym poczytać bo nigdy tego nie stosowałem. 
nospor
ale przeglądajmy przyklejony tematy...
http://forum.php.pl/index.php?showtopic=44...t=0&start=0
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.