W jednym formularzy mam pola z textem oraz z file do uploadu zdjęć. Nie mam zielonego pojęcia jak się za to zabrać?? Jak znajdę jakiś dobry plugin w jquery to i tak muszę napisać walidację w PHP? Dla tych co mają wyłączoną w przeglądarce obługę js. I teraz pytanie skąd mam wiedzieć czy potencjalny użytkownik ma wł czy wył obsługę w swojej przeglądarce js?? Da się to sprawdzić w PHP ? Drugie pytanie cz zna ktoś jakiś fajny plugin w jquery do walidacji, żeby pogodzić <inpputy type="text" oraz type="file" ?? AAA i jeszcze jedna ważna rzecz! W tym formularzy mam 4 inputy type="file" i tu zaczyna się górka. Przez ich ilość... wiadomo name="tab[]"... Proszę o wszelką pomoc bo sam już wysiadam... a mało czasu juz :(
Co do walidacji danych, lepiej zawsze przeprowadzać ją po stronie klienta (JS, jquery) oraz servera (PHP), Server to ostatnia linia obrony, nigdy nie znamy zamiarów potencjalnego użytkownika... =]
Jak znajdę jakiś dobry plugin w jquery to i tak muszę napisać walidację w PHP?
Tak.
Zawsze ktoś może mieć wyłączoną obsługę JS i wtedy (jeżeli nie byłoby walidacji po stronie serwera) mógłby być problem.
I teraz pytanie skąd mam wiedzieć czy potencjalny użytkownik ma wł czy wył obsługę w swojej przeglądarce js?? Da się to sprawdzić w PHP ?
Nie da się.
Tzn, można zrobić takie coś:
Gdy strona się załaduje, to jQuery wywoła plik "CheckJS.php". Plik sobie zapisze, że w tej chwili ten user ma włączone JS; jeżeli plik nie zostanie wywołany, to user nie ma JS.
Lecz nie ma po co się tak męczyć...
Drugie pytanie cz zna ktoś jakiś fajny plugin w jquery do walidacji, żeby pogodzić <inpputy type="text" oraz type="file"
Nie rozumiem.
Jeżeli masz input: <input type="text" name="hello" value="value here"/>
to w PHP odczytujesz go odpowiednio: $_POST['hello']
lub $_GET['hello']
Rozwiń swoją myśl :]
I teraz pytanie skąd mam wiedzieć czy potencjalny użytkownik ma wł czy wył obsługę w swojej przeglądarce js?? Da się to sprawdzić w PHP ?
W tym rzecz, że Ciebie nie powinno to interesować, czy użytkownik ma włączoną obsługę js, czy nie, ponieważ przesyłane dane można łatwo spreparować. Jeśli na siłę w php potrzebujesz wiedzieć, czy obsługa js jest włączona, to najlepiej napisz fragment kodu javascript, który zmieni jakąś ukrytą zmienną w formularzu po załadowaniu strony, a w php sprawdzisz wartość tej zmiennej.
Mam taki formularz:
<form action="dodaj_obiekt.php?strona=wynik" method="post" enctype="multipart/form-data" class="cmxform" id="commentForm">
<h1>Dodaj nowy obiekt</h1>
<fieldset>
<legend>Proszę dodać obiekt</legend>
<label>
<span>Nazwa użytkownika * </span>
<input type="text" class="wpis" name="login" id="nazwa"/>
</label>
<label>
<span>Hasło * </span>
<input type="text" class="wpis" name="haslo" id="nazwa"/>
</label>
<label>
<span>Powtórz hasło * </span>
<input type="text" class="wpis" name="haslo1" id="nazwa"/>
</label>
<label>
<span>Adres email *</span>
<input type="text" class="wpis" name="email" id="nazwa"/>
</label>
<label>
<span>Powtórz adres email *</span>
<input type="text" class="wpis" name="email1" id="nazwa"/>
</label>
</fieldset>
<fieldset>
<label>
<span>Nazwa * </span>
<input type="text" class="wpis" name="nazwa" id="nazwa"/>
</label>
<label>
<span>Typ obiektu * </span>
<select id="temat" name="typ" >
<option>------- Wybierz obiekt ------</option>
<option>Apartamenty</option>
<option>Domki letniskowe</option>
<option>Hotele</option>
<option>Pola namiotowe</option>
<option>Schroniska</option>
</select>
</label>
<label>
<span>Gmina *</span>
<select id="temat" name="gmina" >
<option>------- Wybierz gminę -------</option>
<option>Bakałarzewo</option>
<option>Filipów</option>
<option>Jeleniewo</option>
<option>Przerośl</option>
</select>
</label>
<label>
<span>Ilość pokoi *</span>
<input type="text" class="wpis" name="ilosc_p" id="temat"/>
</label>
<label>
<span>Cena *</span>
<input type="text" class="wpis" name="cena" id="temat"/>
</label>
<label>
<span>Telefon *</span>
<input type="text" class="wpis" name="telefon" id="temat"/>
</label>
<label>
<span>Strona www </span>
<input type="text" class="wpis" name="www" id="temat"/>
</label>
<label>
<span>Opis * </span>
<textarea class="wiadomosc" rows="8" cols="45" name="opis" id="tresc"></textarea>
</label>
</fieldset>
<fieldset>
Pierwsze dodane zdjęcie jest Tworzone jako miniatura ogłoszenia.
<label>
<span>Dodaj zdjęcie1 * </span>
<input type="file" class="wpis" name="tab[]" id="temat" />
</label>
<label>
<span>Dodaj zdjęcie2 * </span>
<input type="file" class="wpis" name="tab[]" id="temat" />
</label>
<label>
<span>Dodaj zdjęcie3 * </span>
<input type="file" class="wpis" name="tab[]" id="temat" />
</label>
<label>
<span>Dodaj zdjęcie4 * </span>
<input type="file" class="wpis" name="tab[]" id="temat" />
</label>
</fieldset>
<fieldset>
<label>
<span>Przepisz kod z obrazka:<span>
<img id="siimage" src="CaptchaSecurityImages.php?width=100&height=40&characters=5" class="fota" />
<input class="kod" id="security_code" name="security_code" type="text" />
<a href="#" onclick="document.getElementById('siimage').src = 'CaptchaSecurityImages.php?' + Math.random(); return false">Reload Image</a>
</label>
</fieldset>
<label>
<input type="submit" class="button" name="submit" value="Dodaj obiekt" />
</label>
</form>
</div>
I nie wiem jak go zwalidować. Użyłem ostatnio plugina z jquery, ale na samym końcu okazało się, że jest problem z walidacją 4. ostatnich inputów type="file". Resztę waliduje bez najmniejszego problemu... Przypominam type file obsługuje $_FILE. Nooo nie wiem, może ktoś używał jakiegoś fajnego plugina do uploadowania zdjęć na serwer?
<label>
<span>Dodaj zdjęcie1 * </span>
<input type="file" class="wpis" name="tab[]" id="temat" />
</label>
<label>
<span>Dodaj zdjęcie2 * </span>
<input type="file" class="wpis" name="tab[]" id="temat" />
</label>
<label>
<span>Dodaj zdjęcie3 * </span>
<input type="file" class="wpis" name="tab[]" id="temat" />
</label>
<label>
<span>Dodaj zdjęcie4 * </span>
<input type="file" class="wpis" name="tab[]" id="temat" />
</label>
Dlaczego wszystkie mają takie same nazwy?
<label>
<span>Dodaj zdjęcie1 * </span>
<input type="file" class="wpis" name="zdj1" id="temat" />
</label>
<label>
<span>Dodaj zdjęcie2 * </span>
<input type="file" class="wpis" name="zdj2" id="temat" />
</label>
<label>
<span>Dodaj zdjęcie3 * </span>
<input type="file" class="wpis" name="zdj3" id="temat" />
</label>
<label>
<span>Dodaj zdjęcie4 * </span>
<input type="file" class="wpis" name="zdj4" id="temat" />
</label>
$_FILES["zdj1"]
$_FILES["zdj2"]
$_FILES["zdj3"]
$_FILES["zdj4"]
A co do obsługi js to chyba to wiele wyjaśni:
<noscript> <form action="sprawdz.php"></form> </noscript>
?? W przypadku wył obsługi js w przeglądarce powinno chyba coś takiego zadziałać?? Jak uważacie? I dodam jedno ukrute pole np wyl_js do $_POST i wtedy w PHP
if (isset($_POST['wyl_js'])){
// i tu pełna walidacja formularza
}