Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ograniczenie długości łańcucha typu string zapisanej do zmiennej z formularza
Forum PHP.pl > Forum > PHP
Fixer
Problem:

$Zmienna która przyjmuje DŁUGĄ WARTOŚĆ typu string (ok 100 kb) pochodzącą z formularza z metody $_POST zostaje usunięta (empty true). Zaś na innym serwerze ten sam kod przyjmuje poprawnie wartość i przesyła ją do mysql (insert).

O co tu chodzi i w czym leży problem?

Dodam, że PHP nie wywala żadnego błędu [E_ALL; error_reporting(1); ini_set('display_errors', on')]
Problem z Mysql to to raczej nie jest bo w phpmyadminie mogę spokojnie dodać ręcznie ten tekst do bazy przez formularz phpmyadmina (pole jest typu mediumtext).

PS przepraszam jeśli umieściłem post w złym wątku ale nie wiem w czym leży problem apache/php czy mysql
bim2
Poczytaj o post_max_size (w pliku ini) smile.gif
Fixer
to raczej nie to bo aktualnie
  1. echo ini_get('post_max_size');
mówi, że jest to wartość wynosząca 8M

zaś
  1. echo ini_get('memory_limit');
daje wynik 32M

tu jest podobny temat ale nikt nie zna odpowiedzi: http://forum.php.pl/index.php?showtopic=84...l=post_max_size
bim2
Pokaż w takim razie kod. Ja stawiam na register_globals smile.gif
Fixer
  1. <form method=POST action="TEST.PHP">
  2. <textarea name="zmienna"></textarea>
  3. <input type="submit">
  4. </form>
  5. <?
  6. echo '<pre>';
  7. print_r($_POST);
  8. echo '</pre>';
  9. ?>


nie ma zmiennych globalnych
bim2
Hmmm, nie mam pomysłu. Testujesz to na tej samej przeglądarce, dla pewności pytam ? smile.gif I jaki to jest serwer, ten który nie działa?

Może tyle danych wypadałoby wysyłać w pliku .txt w takim razie?
Fixer
Cytat(bim2 @ 16.12.2009, 21:15:20 ) *
Testujesz to na tej samej przeglądarce?

tak (na IE i na FF)
zresztą problem jest po stronie serwera nie użytkownika przeglądarki

na tej konfiguracji działa
Windows / XP PRO PL SP3

Apache 2.2.11 (service)
PHP 5.2.8
memory_limit 128M
upload_max_filesize = 55M
post_max_size = 55M
MySQL 5.1.30 (service)
phpMyAdmin 3.1.2


a na tej nie działa:
Red Hat Enterprise Linux / CentOS 5.4

Apache 2.x
PHP 5.x
memory_limit 32M
upload_max_filesize 10M
zend_optimizer 3.3.3

MySQL 5.x
phpMyAdmin 2.11.9.5

Co wy na to?
blooregard
Cytat
Co wy na to?


Stawiam na nazwę pliku napisaną dużymi literami TU:
Cytat
action="TEST.PHP">


Unix'y rozróżniają wielkość liter w nazwie plików. Dlatego na serwerze RedHat'a to nie działa, bo ten plik masz pewnie zapisany jako test.php, a nie TEST.PHP
Fixer
nie... kombinujcie dalej...

Pisane czy z małej czy z dużej (i nazwa pliku i nazwa w action) efekt jest ten sam.
Pozatym gdyby nazwa była błędna to po prostu formularz po kliknięciu by znikł a on wyświetla się tylko traci wartość w zmiennej którą próbował pobrać z POST

po 2h kopania w wujka googla mam chyba odp smile.gif
http://www.bradino.com/php/empty-post-array/

sprawdzę i dam znać...
bim2
Jakie te dane wklejasz? Zwykły tekst czy jakieś śmieciopodobne rzeczy?

Aha, i serwer masz swój własny tj. sam nim zarządzasz czy jakiś hosting wirtualny?
Fixer
litery, liczby, znaki specjalne i polskie znaki diakrytyczne

same "0" też nie przechodzą w ilości większej niż 65 tys.

przez formularz przechodzi max 65 000 znaków.... 65001 już nie (post jest empty)tongue.gif
więc jest gdzieś nałożona blokada!!!

kombinujcie i podpowiadajcie...

dodano:
prawdopodobnie dodatek "suhosin" blokuje posta
w pliku .htaccess należy dodać wpisy:

[APACHE] pobierz, plaintext
  1. php_value suhosin.post.max_vars 5000
  2. php_value suhosin.post.max_value_length 500000
  3. php_value suhosin.request.max_vars 5000
  4. php_value suhosin.request.max_value_length 500000
[APACHE] pobierz, plaintext
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.