Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]sesion przerywa skrypt
Forum PHP.pl > Forum > Przedszkole
kondziu9516
Witam,
mój problem wygląda następująco:

Mam skrypt uploadu.
Chciałbym, aby zapisało mi do bazy nazwy obrazków.
Narazie próbuję na nazwie byle jakiej.

Do zapisu zrobiłem osobny plik, a w skrypcie uploadu go dołączam.
Ale coś przerywa dalsze działanie.
Tak jakby session_start();

Ktoś wie czym to jest spowodowane i dlaczego ?

oto skrypt tego uploadu:
  1. <?php
  2.  
  3. // Jeśli chcesz zignorować przesyłane pliki,
  4. // ustaw $demo_mode na true;
  5.  
  6. $demo_mode = false;
  7. $upload_dir = 'uploads/';
  8. $allowed_ext = array('jpg','jpeg','png','gif');
  9.  
  10.  
  11. if(strtolower($_SERVER['REQUEST_METHOD']) != 'post'){
  12. exit_status('Error! Wrong HTTP method!');
  13. }
  14.  
  15.  
  16. if(array_key_exists('pic',$_FILES) && $_FILES['pic']['error'] == 0 ){
  17.  
  18. $pic = $_FILES['pic'];
  19.  
  20.  
  21. if(!in_array(get_extension($pic['name']),$allowed_ext)){
  22. exit_status('Tylko '.implode(',',$allowed_ext).' pliki są dozwolone!');
  23. }
  24.  
  25. if($demo_mode){
  26.  
  27. // Przesyłanie plików jest wyłączone. Zapisujemy tylko logi.
  28.  
  29. $line = implode(' ', array( date('r'), $_SERVER['REMOTE_ADDR'], $pic['size'], $pic['name']));
  30. file_put_contents('log.txt', $line.PHP_EOL, FILE_APPEND);
  31.  
  32.  
  33. exit_status('');
  34. }
  35.  
  36.  
  37. // Przeniesienie pliku z folderu tymczasowego
  38. // do folderu docelowego:
  39.  
  40. if(move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name'])){
  41. include("zapis-baza.php");
  42. exit_status('Plik wrzucony poprawnie!');
  43.  
  44. }
  45.  
  46. }
  47.  
  48. exit_status('Coś poszło nie tak z Twoim uploadem!');
  49.  
  50.  
  51. // Funkcje pomocnicze
  52.  
  53. function exit_status($str){
  54. echo json_encode(array('status'=>$str));
  55.  
  56.  
  57. }
  58.  
  59. function get_extension($file_name){
  60. $ext = explode('.', $file_name);
  61. $ext = array_pop($ext);
  62. return strtolower($ext);
  63.  
  64. }
  65.  
  66.  
  67.  
  68. ?>


A tu skrypt zapisu do bazy:

  1. <?
  2.  
  3.  
  4. require_once ('../../strony/db2.php');
  5.  
  6.  
  7.  
  8. mysql_query("INSERT INTO obrazkitymczasowe SET pic1='nazwaobrazka'") or die(mysql_error());
  9.  
  10. die(); // przerywam wykonywanie skryptu
  11. ?>
sowiq
  1. ini_set('display_errors', '1');
kondziu9516
myślałem o tym, ale wywołanie uploadu jest w js KOD:

  1. $(function(){
  2.  
  3. var dropbox = $('#dropbox'),
  4. message = $('.message', dropbox);
  5.  
  6. dropbox.filedrop({
  7. //
  8. paramname:'pic',
  9.  
  10. maxfiles: 5,
  11. maxfilesize: 2,
  12. url: 'post_file.php',
  13.  
  14.  
  15.  
  16. uploadFinished:function(i,file,response){
  17. $.data(file).addClass('done');
  18.  
  19. const x = 12;
  20. const bla = file.name+' zostało zapisane na serwerze';
  21. alert(bla);
  22.  
  23.  
  24. },
  25.  
  26. error: function(err, file) {
  27. switch(err) {
  28. case 'BrowserNotSupported':
  29. showMessage('Twoja przeglądarka nie wspiera uploadu plików HTML5!');
  30. break;
  31. case 'TooManyFiles':
  32. alert('Za dużo zdjęć! Wybierz co najwyżej 5.');
  33. break;
  34. case 'FileTooLarge':
  35. alert(file.name+' jest za duże!. Wrzuć zdjęcie o wadze najwyżej 2 MB.');
  36. break;
  37. default:
  38. break;
  39. }
  40. },
  41.  
  42.  
  43. beforeEach: function(file){
  44. if(!file.type.match(/^image\//)){
  45. alert('Tylko zdjęcia są dozwolone!');
  46.  
  47.  
  48. return false;
  49. }
  50. },
  51.  
  52. uploadStarted:function(i, file, len){
  53. createImage(file);
  54. },
  55.  
  56. progressUpdated: function(i, file, progress) {
  57. $.data(file).find('.progress').width(progress);
  58. }
  59.  
  60. });
  61.  
  62. var template = '<div class="preview">'+
  63. '<span class="imageHolder">'+
  64. '<img />'+
  65. '<span class="uploaded"></span>'+
  66. '</span>'+
  67. '<div class="progressHolder">'+
  68. '<div class="progress"></div>'+
  69. '</div>'+
  70. '</div>';
  71.  
  72.  
  73. function createImage(file){
  74.  
  75. var preview = $(template),
  76. image = $('img', preview);
  77.  
  78. var reader = new FileReader();
  79.  
  80. image.width = 100;
  81. image.height = 100;
  82.  
  83. reader.onload = function(e){
  84.  
  85.  
  86.  
  87. image.attr('src',e.target.result);
  88. };
  89.  
  90.  
  91. reader.readAsDataURL(file);
  92.  
  93. message.hide();
  94. preview.appendTo(dropbox);
  95.  
  96.  
  97.  
  98. $.data(file,preview);
  99.  
  100. }
  101.  
  102. function showMessage(msg){
  103. message.html(msg);
  104. }
  105.  
  106.  
  107. });


Wywołanie jest tą linijką: url: 'post_file.php',
sowiq
Cytat
myślałem o tym, ale wywołanie uploadu jest w js

No i? Piszesz, że session_start() przerywa Ci działanie skryptu. Wklej na początku tego skryptu włączenie raportowania błędów żeby zobaczyć, co tak na prawdę powoduje błąd. A testować łatwiej Ci na początek będzie zwykłym formularzem HTML niż jakimiś JS-owymi widżetami.
kondziu9516
a jest jakiś inny sposób, żeby przekazać po prostu zmienną z nazwą obrazka do całkiem innego pliku ?
Bo myślałem, żeby zapisywać do bazy, ale po co jak może być zmiennymi.
sowiq
Na samym początku pliku, do którego wysyłasz zapytanie, ustaw error reporting (wkleiłem Ci dokładny kod) i zobacz jakie błędy Ci wypluje. Jeśli koniecznie chcesz używać tego JS do testowania, to sprawdzaj w Firebugu co otrzymujesz w odpowiedzi.

Mam nieodparte wrażenie, że szukasz nie tam, gdzie powinieneś.
kondziu9516
nie ogarniam ;/

A inny sposób przekazania zmiennej ?
sowiq
Zaczynasz nowy temat od tezy, że session_start() przerywa Ci działanie skryptu. Napisałem Ci jak sprawdzić jaki dokładnie masz błąd. A Ty zamiast sprawdzić, pytasz teraz o jakieś przekazywanie zmiennych. Sorry, ale przestałem ogarniać o co pytasz.
kondziu9516
Okej to tak:

Chodzi o to, że pobrałem skrypt uploadu.
Wszystko działa super i zapisuje mi do folderu uploads.
Ale chciałbym pobrać nazwe zapisanego pliku po to, żeby potem ją pobrać do bazy.
Myślałem, żeby przekazać zmiennymi, ale nie wiem jak.

Początkowo chciałem to zrobić, że za każdym razem w bazie zapisze te nazwy,
potem sobie je pobiorę i wyczyszczę tabele.
I tak w kółko.

Cały upload jest dodany w znacznikach: <iframe title="REGULAMIN" align="left" src="upload_drop/index.php" width="900" height="400"></iframe>
do formularza z polami, które też chcę potem przesłać (ale to już co innego)

I jak pobrać tą nazwę zapisanego zdjecia do początkowej strony.
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.