Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Upload plików + formularz + walidacja, problem z działaniem skryptu
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


Panowie robię poprzez formularz przesył plików oraz zwykły input który jest walidowany, niestety pojawił się problem, który polega na tym, że jeśli wysyłam bez "uaktywnienia" walidacji wszystko działa ok, natomiast jeśli "auaktywni" się walidacja gdzieś gubi zmienną:

kod html:
  1. <form method="post" name="dodaj" enctype="multipart/form-data">
  2. Avatar: <input type="text" name="avatar" value="">
  3. Wgraj plik: <input type="file" name="plik[]">
  4. <input type="submit" name="dodaj" value="Zapisz">
  5. </form>


kod php:
  1. if(array_key_exists('dodaj', $_POST)){
  2. $avatar = $_POST['avatar'];
  3. $mojplik = isset($_FILES['plik'])? $_FILES['plik'] : array();
  4.  
  5. if(empty($avatar)){
  6. $blad = "Brak nazwy avatar.";
  7. }else{
  8. try{
  9. $errors = true;
  10. if(isset($mojplik['name'])){
  11. if (!file_exists(''.server().'/avatar/'.$ids.'')) {
  12. mkdir(''.server().'/avatar/'.$ids.'', 0777);
  13. foreach ($mojplik['name'] as $val=>$fileName){
  14.  
  15. $FileTmpOne = $mojplik['tmp_name'][0];
  16. $FileNameOne = $mojplik['name'][0];
  17. $FileSizeOne = $mojplik['size'][0] / 1000;
  18. $format = explode('.', $FileNameOne);
  19. $obrazek1 = md5($FileTmpOne.$FileSizeOne.$ids);
  20.  
  21. if(is_uploaded_file($FileTmpOne)) {
  22. if($FileSizeOne <= 5000){
  23. if($format[1] == 'jpg'){
  24. move_uploaded_file($FileTmpOne, ''.server().'/avatar/'.$ids.'/'.$obrazek1.'.jpg');
  25. }else{
  26. $msg = 'Dozwolony tylko jpg.';
  27. $errors = false;
  28. }
  29. }else{
  30. $msg = 'Dozwolony tylko do 5 mb';
  31. $errors = false;
  32. }
  33. }
  34.  
  35. $FileTmpTwo = $mojplik['tmp_name'][1];
  36. $FileNameTwo = $mojplik['name'][1];
  37. $FileSizeTwo = $mojplik['size'][1] / 1000;
  38. $format = explode('.', $FileNameTwo);
  39. $obrazek2 = md5($FileTmpTwo.$FileSizeTwo.$ids);
  40.  
  41. if($errors == true){
  42. $pdo = new db_connect();
  43. $sql = $pdo->prepare("INSERT INTO `users` (
  44. `ids`, `obrazek1`, `obrazek2`)
  45. VALUES (
  46. :item, :obrazek1)");
  47.  
  48. $sql->bindValue(':ids', $ids, PDO::PARAM_INT);
  49. $sql->bindValue(':obrazek1', $obrazek1, PDO::PARAM_STR);
  50. $sql->bindValue(':obrazek2', $obrazek2, PDO::PARAM_STR);
  51. $sql->execute();
  52.  
  53. $msg = 'super dodano.';
  54. }else{
  55. $msg = 'błąd';
  56. }
  57.  
  58. }catch(PDOException $e){
  59. echo $e->getMessage();
  60. $msg = 'błąd dodania.';
  61. }
  62. }
  63. }


Robiąc print_r($obrazek1) - widzę, że zmienna $obrazek1 w przypadku wykrycia walidacji i ponownym wysłaniu formularza gdzieś się traci.
Ktoś pomoże ?

Aha operacje na pliku robię na tablicy , gdyż dojdzie jeszcze możliwość wgrania innego formatu.

Ten post edytował casperii 10.06.2018, 17:35:08
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 11:13