Hátha valaki megszívta már ilyesmivel... PHP-val képfeltöltés, akár file-ba, akár adatbázisba. Bizonyos képek esetében azonban nem történik meg a feltöltés, de hogyha az adott képet újra kimentem Photoshoppal, akkor nagy valószínűséggel mégiscsak sikerül a feltöltés. De olyan is van, hogy feltöltök egy teljesen más képet, majd újra megpróbálkozom a korábban kifogásolttal (amihez nem piszkáltam hozzá), és akkor meg már jól felmegy. Ez mitől lehet? Elképzelhető, hogy ez PHP-hiba? (A PHP Linuxon fut (friss Red Hat illetve 7.3-as SuSE), míg a kliens sima Windows98 vagy 2000.)
Sziasztok!
Lenne egy kis problémám.
Nagyvonalakban, csak a lényeg:
Adott egy oldal, nagyjából úgy néz ki, hogy fönt egy termék képe és leírása, alatta egy táblázatban a rendelő form.
A termék képe és leírása (egyenlőre) statikus HTML, a rendelő formot pedig echo()-kkal csináltam.
Minden nagyon jól néz ki, minden a helyén.
Viszont.
Ha csinálok egy olyat, hogy a formot megjelenítő kódrészletet kivágom, csinálok egy függvényt, miszerint:
function megjelenit () {
// ide pastézom az egész cuccot
}
és meghívom a függvényt, akkor a form felcsúszik, rá a képre, talán mint új layer jelenik meg az oldalon.
Miért van ez?
Tudtok segíteni?
Hasznalt mar valaki innen DOM XML parsing-ot?
En most probalkozom vele, es a peldaprogramok sem akarnak menni rendesen!
Nem ir ki semmi hibat, csak nincsenek ertekeik a valtozoknak!
pl.:
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