Az a gond, hogy meg is érkezik HTML-ként (amit írtál, az okay), tehát az tiszta. Inkább olybá tűnik a dolog (mert próbáltam szövegként is és hasonló jelenséget tapasztaltam), mintha csak bizonyos számú karaktert lenne hajlandó továbbítani. Kerestem ilyen jellegű beállításokat a php.ini-ben és a http.conf-ban is, de semmi ilyesmit nem találtam sajnos. Úgy vettem észre, hogy 735 karakterig semmi gond, de felette csonkol.
Ötlet?
De letesztelem még pár módon, hogy biztosan ne mondjak hülyeséget...
Kérdezném a T. PHP gurukat, hogy miként orvosolhatnám azt a problémát, hogy PHP-ből szeretnék levelet küldeni, de az összerakott levéltartalom, míg a böngészőben, mint HTML kód szépen megjelenik, addig a levél csak csonkolva érkezik meg a címzettnek. Magyarul, a levél eleje elmegy, de teljesen véletlenszerűen levágja a végét.
Kérem a segítségeteket eme ügyben.
pontosan, csakis a program irojatol fugg mennyire biztonsagos a programja. Eleve le kell (kellene?) ellenorizni a gpc adatokat, mert ez igy tenyleg 0 security amit irt a cikk iroja, de ez nem is alternativa :), lehet bugos kodot is irni es lehet normalisat is, aki tud programozni az tobbnyire kevesbe bugosat ir, aki meg nem az meg probalkozik. Sztem ennyi:)
Ismer valaki használható, kellemesen mozgékony fórumot PHP-ügyben? Mondjuk olyasmit, mint a www.devshed.com? (Nem baj, ha magyar.)
Megy a vita világszerte, hogy jó dolog-e, ha engedélyezettek az automatikus globális változók, tehát hogy a GET illetve POST metódusokban küldött értékeket globális változókká alakítja a PHP. Az ellenzők úgy vélik, ezzel csökken a biztonság. (http://old.lwn.net/2001/0704/a/study-in-scarlet.php3)
Az említett cikkben az alábbi kódot közlik (kicsit hibásan, az első sorban csak 1 db = jel van az eredetiben, ami nem kifejezetten azt csinálja, amit szeretne a program írója):
<?php
if ($pass == "hello")
$auth = 1;
...
if ($auth == 1)
echo "some important information";
?>
A szerző okosan rámutat, hogy az adott program "titkosított" részét simán meg lehet nézni a jelszó ismerete nélkül egy programnev.php?auth=1 URL segítségével.
Nem értem, miért nem a "varázsszóval" kezdi a programot, eképpen:
<?php
unset($auth); if ($pass == "hello")
$auth = 1;
...
if ($auth == 1)
echo "some important information";
?>
Az unset rögtön kinyírja a külsőleg definiált változót, így azt belül már nyugodtan lehet figyelgetni, az lesz benne, amit a programozó parancsol.
Aztán azt sem értem, hogy miért jó, hogy a függvények nem látják a globális változókat, csak a global parancssal "odaadom" nekik.
egyetlen oldalletöltéssel nem valósítható meg, illetve ahhoz valami spéci javascript kell, de ha van mondjuk 5000 neved, elég bajos az egészet letölteni 1 oldalba.
viszont mondjuk sessionökkel könnyen megoldható, épp egy hasonló feladatot faragok most én is a munkahelyemen!
Kedves PHP-sok!
Megvalósítható-e az alábbi elgondolás PHP-val?
Adott egy űrlap, ahova több szerző nevét kell bevinni. A MySQL adatbázisban már van mintegy 5000 szerző. Jó lenne, ha azon, már bevitt szerzőknek a nevét meg tudnánk jeleníteni, akiknek a neve egy adott karaktersorozattal kezdődik és ha az adott szerző már létezik, csak át kellene emelni ezt a megfelelő mezőbe (az egyégesség miatt, hogy egy név csak egyféleképp fordulhasson elő).
Pl. Kováts J. Az adatfeldolgozó beírja, hogy Kováts, erre megjelenik egy lista az összes Kováts kezdetű névvel és ő kiválasztja a jót, ill. ha nincs ilyen, ő írja be. Mindezt többször is egy űrlapon belül, ha több szerző van.
Ha minden adat benn van, a cím is, OK, tárolodhat minden az adatbázisban.
csinald azt, egy mukodo .php file-t atnevezel .html-re, es ugy porblad ki. Nem csak .htm -t irtal be apache conf-ba? :)) Es ujrainditottad apache-t? :)
Az nl2br pedig az uj php-kba mar mukodik viszonylag rendesen, neha igaz, windoz alol, IE, olyan sortorest kuld amit nem esz meg. Amugy tuti van sortores (per n) a szovegbe? vagy csak a textarea tori be, de virtual es nem igazabol:) Ezt megnezheted ha kiiratod a megkapott textarea erteket es megnezed source-ba van-e soremeles. Ha elvileg minden jo lenne, de megsem megy, akkor probald igy:
Amugy, nezd meg a tobbi kerdesedre a www.php.net/strings fugvenyeket, htmlspecialchars , htmlentities, nameg ha specko (ertsd regularis) replace-ket akarsz, akkor a preg_replace es tarsait :)
Köszi a tippet, de kicsit konkrétabban kéne.
A httpd.conf-ban az
AddType application/x-httpd-php sorba a .php után beírtam a .html szót is. Újraindítottam az apache-ot, de továbbra sem értelmezi a html kiterjesztésű állományokba írt php kódot.
Nem jó helyre nyúltam, vagy tennem kell még mást is?
Kedves Crockl és PHP-sok!
Megoldódott végre a probléma. Nem a jó php.ini-t nézegettem, vagyis amelyik a /usr/local/lib-ben van, hanem egy másikat. És a /usr/local/lib/php.ini-ben nem volt beállítva a 'register_globals = on'.
Most már minden OK.
Köszönöm a segítséget!!!!!
Kérdés még, hogy érdemes-e valóban átállni a _POST és _GET módszerre a változók eléréséhez, mert azt ajánlgatja a 'manual'.
A LINUX-os PHP 3.0.18,
a UNIX-os PHP 4.2.0.
Nem én telepítettem egyiket sem, mert én a LINUX-hoz, UNIX-hoz inkább csak felhasználói szinten értek (parancsok kiadása). De úgy látom bele kell magam ásni az ini file-ok rejtelmeibe.
Elolvastam az ajánlott anyagot, de nem lettem okosabb.
A phpinfo () a php3-nál hozza a
HTTP_POST_VARS["keres"] = cim
és a php4-nél a
_POST["keres"] = cim
értéket
a QUERY_STRING-nél ott van a
_GET("fsz")=15
és mégsem tudom magát a változót egyszerű printtel kinyomtatni.
nem igazan ertem hogy ha az fsz valtozot adod at get-be akkor miert a keres valtozot nezed. :) A masik hogy a ket helyen a 2 php verzioja ugyan az? php.ini tartalma szinten?
Ha kulonbozo php verzio, es kulonbozo az ini akkor a kerdes nem kerdes. Amugy ha uj dolgokat tesz fel az ember, foleg az ember aki felteszi, nameg a fejleszto is aki hasznalja jo ha utananez, nameg tudja mit hasznal. www.php.net.
Amugy ha nem sajat ini-t hasznaltok, hanem mindig ami jon alapbol akkor gondolom mar olvastatok:
The biggest change in PHP 4.2.0 concerns variable handling. External variables (from the environment, the HTTP request, cookies or the web server) are no longer registered in the global scope by default. The preferred method of accessing these external variables is by using the new Superglobal arrays, introduced in PHP 4.1.0. http://www.php.net/release_4_2_0.php
Eredmény a UNIX-on, itt nem mennek a dolgok:
Kérés:
Fsz:
verzió =
val=
val=
val=
val=cim
val=
Ha a Query string-gel próbálom az átvitelt, hasonló a helyzet.
A phpinfo szerint a konfigurálásban sok a különbség, lehet, hogy itt a baj??
LINUX:
Configure command: ../configure '--with-apxs=/usr/bin/apxs' '--disable-debug' '--with-filepro' '--with-config-file-path=/etc/php3/apache' '--with-zlib' '--without-gd' '--enable-sysvsem' '--enable-sysvshm' '--with-yp' '--with-gettext' '--with-ftp'
php3.ini file path is set to: /etc/php3/apache
Előre is bocs, ha hülyeséget írok ;-)
Úgy emlékszem, erre kell az ú.n. php_module.
Magyarán az Apache-t PHP modullal kell fordítani, ha "gyárilag" nincs benne.
Bővebbet most nem tudok mondani, de ha nem felejtem el és nem kapsz értelmesebb választ, akkor ma vagy holnap megnézem, hogy mit követtem el a dolog érdekében ;-)
hat akkor ... :)) elvileg jonak kell lennie. Ezt azt mondod nem megy ez:
Hivatkozas:
ize.php?val=ertek
Php:
print "val=".$val."\n";
print "val=".$HTTP_GET_VARS["val"]."\n";
print "val=".$GLOBALS["val"]."\n";
print "val=".$_REQUEST["val"]."\n";
print "val=".$_GET["val"]."\n";
valamint a phpinfo(); -ba sincs semmi info a val-rol es az ertek-erol ???? Sima egyszeru csupasz php file-on probald:)
variables_order az mi nalad?
(variables_order = "EGPCS" mondjuk az alapeset), gpc_order ? , magic_quotes_gpc ? safe_mod on/off ?
variables_order="EGPCS"
gpc_order = "GPC"
magic_quotes_gpc = O
safe_mode = Off
A PHP az APACHE-ba statikusan van belefordítva AIX 4.2 op. rendszeren, a httpd -l szerint benne vannak az alábbiak, a mpd.php4.c is.
Compiled-in modules:
http_core.c
mod_env.c
mod_log_config.c
mod_mime.c
mod_negotiation.c
mod_status.c
mod_include.c
mod_autoindex.c
mod_dir.c
mod_cgi.c
mod_asis.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_access.c
mod_auth.c
mod_setenvif.c
mod_php4.c
ha a rendszergazda feltesz uj (verzioju) programot akkor O is, meg a programozo is jo ha elolvassa mit irtnak az adott program-hoz :)
http://www.php.net/release_4_2_0.php Mar ha 4.2-es php-t tettetek fel.