Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Problem z przekazywanie wartości w formularzu
Forum PHP.pl > Forum > Przedszkole
boro11
  1. <input type="hidden" name="url" value="<? echo $clean_name;?>"/>


a kod całego formularza wygląda tak:
  1. <form action="" method="post" enctype="multipart/form-data">
  2.  
  3. Please upload your payment proof it will help us to grow faster and make our website even more reliable.<br /><br /><br />
  4.  
  5. <input type="hidden" name="username" value="<?php echo $_SESSION['login']; ?>"/>
  6. <input type="hidden" name="status" value="Approved"/>
  7.  
  8. <input type="hidden" name="url" value="<? echo $clean_name;?>"/>
  9. <input type="hidden" size="40" value="<? $dzien0=date("d"); $miesiac0=date("m"); $rok0=date("Y"); echo "$rok0-$miesiac0-$dzien0"; ?>" name="data">
  10. <input type="file" name="upload" /> <br /><br />
  11. <input type="submit" name="submit" value="Upload" />
  12.  
  13. </form>


Sam kod php odpowiedzialny za upload/wykonywanie formularza:

  1. <?
  2. require("connection.php");
  3. connection();
  4.  
  5. if(isset($_POST['submit'])){
  6. $username = ($_POST['username']);
  7. $status = $_POST['status'];
  8. $url = $_POST['url'];
  9. $data = $_POST['data'];
  10.  
  11.  
  12.  
  13. $zapytanie = "INSERT INTO `mproof` VALUES(' ','$username','$status','$url','$data')";
  14. mysql_query($zapytanie);
  15.  
  16.  
  17. $dir = "./proof/"; //Change this to the correct dir RELATIVE TO WHERE THIS SCRIPT IS, or /full/path/
  18.  
  19. //MIME types to allow, Gif, jpeg, zip ::Edit this to your liking
  20. $types = array("image/png","image/x-png","image/gif","image/jpeg","image/pjpeg","image/jpg","image/bmp");
  21.  
  22. // Nothing to edit below here.
  23.  
  24. //Function to do a directory listing
  25. function CPGscandir($dirstr) {
  26. echo "<pre>\n";
  27. passthru("ls -l -F $dirstr 2>&1 ");
  28. echo "</pre>\n";
  29. }
  30.  
  31.  
  32.  
  33. //Shorten Variables
  34. $rand=rand(1,99);
  35. $tmp_name = $_FILES['upload']['tmp_name'];
  36. $new_name = $rand.$_FILES['upload']['name'];
  37. $path = $_POST['subdir'];
  38. $fullpath = "$dir$path/";
  39. $fullpath = str_replace("..", "", str_replace("\.", "", str_replace("//", "/", $fullpath)));
  40. $clean_name = ereg_replace("[^a-z0-9._]", "", str_replace(" ", "_", str_replace("%20", "_", strtolower($new_name) ) ) );
  41. $string = $dir;
  42.  
  43. // lets see if we are uploading a file or doing a dir listing
  44. if(isset($_POST['Dir'])){
  45. echo "Directory listing for $fullpath\n";
  46. scandir("$fullpath");
  47. }else{
  48.  
  49.  
  50. //Check MIME Type
  51. if ((in_array($_FILES['upload']['type'], $types)) and (!file_exists($fullpath.$clean_name))){
  52.  
  53. // create a sub-directory if required
  54. if (!is_dir($fullpath)){
  55. mkdir("$fullpath", 0755);
  56. }
  57. //Move file from tmp dir to new location
  58. move_uploaded_file($tmp_name,$fullpath . $clean_name);
  59.  
  60.  
  61. echo "<br /><div id='TOS'>Your proof is uploaded correctly. You could request your payout now.</div>";
  62.  
  63.  
  64.  
  65.  
  66. }else{
  67.  
  68. //Print Error Message
  69. echo "<small>File <strong><em>{$_FILES['upload']['name']}</em></strong> Was Not Uploaded - bad file type or file already exists</small><br />";
  70. //Debug
  71. $name = $_FILES['upload']['name'];
  72. $type = $_FILES['upload']['type'];
  73. $size = $_FILES['upload']['size'];
  74. $tmp = $_FILES['upload']['name'];
  75.  
  76. echo "Name: $name<br />Type: $type<br />Size: $size<br />Tmp: $tmp";
  77.  
  78. }
  79.  
  80. }
  81. } else {
  82. echo '';
  83. } ?>


I wszystko działało, aż tu nagle dziś przestało działać dodawanie do bazy tego jednego elementu. Dodało parę razy po upublicznieniu skrypt dla użytkowników mojej strony a potem przestało działać. Co ciekawe dodało tylko jednemu pierwszemu userowi, a ja testowałem sam wiec może to jest jakoś przypisane do jednej osoby?
pienso
Może coś z uprawnieniami się zmieniło?
boro11
Plik w którym jest formularz ma uprawienia 644, jeśli o to chodziło. W bazie danych nic nie zmieniałem.

Trochę pozmieniałem, ale nadal nie działa tak jak należy.

Kombinując doszedłem do wniosku że skrypt działa ale dopiero jak gdzieś wczesniej wyświetlę
  1. <? echo $clean_name;?>

Problem w tym, że nazwa która się dodaje jest nazwą pliku który był wrzucany wcześniej. Przenosiłem dodawanie w różne miejsca (za tym jak nadaje się nazwa dla $clean_name na koniec i w inne miejsca ale niestety nie otrzymuje efektu który bym chciał. Mimo tego że $clean_name wyświetla się poprawnie to w formularzu jest "opóźnione" o jeden wstecz.

Wynikało by z tego i tak jest że formularz wykonuję się na początku (co jest oczywiste). Da się to jakoś poprawić tak żeby działo jak należy?
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.