Aktív témák
-
faster
nagyúr
válasz
burgatshow
#4003
üzenetére
Nem minden dátumkezelő függvény lokalizált, talán csak egyedül az strftime. Az a legegyszerűbb, ha egy tömbben eltárolod a hónapok magyar neveit, és programból rakod össze amagyar dátumot.
[Szerkesztve] -
-
faster
nagyúr
válasz
VladimirR
#3826
üzenetére
POST requesthez a CURL csomag a legjobb, én is használtam már. Ha valamiért nem alkalmazható, akkor pedig el kell küldeni egy html oldalt a böngészőnek, benne egy formmal, az adatok hidden mezőben, és javascriptből automatikusan submittálni. Headerrel nem lehet post requestet küldeni.
-
faster
nagyúr
mysql_connect(''sql'',''btgsmusic'',''nemezajelszó'');
mysql_select_db(''btgsmusic'');
Ez alapján azt hittem, ismered az adatbázis kezelést. Létre kell hozni egy adattáblát, egy mezővel, amiben számolsz.
CREATE TABLE counter(counter bigint not null);
Beszúrsz egy rekordot:
INSERT INTO counter SET counter=0;
Aztán minden egyes oldaltöltődésnél, amikor lépetni akarod a számlálót, végre kell hajtani ezt:
UPDATE counter SET counter=counter+1; -
faster
nagyúr
válasz
Terminus_
#3810
üzenetére
Windows alatt nem nagyon szoktam belefutni jogosultsági problémákba. Nem lehetséges, hogy safe mode-ban van a PHP?
Bővebben: link -
faster
nagyúr
válasz
Tele von Zsinór
#3569
üzenetére
Na, akkor leírom, bár nálam 1.3.31-es Apache van különféle kompatibilitási okok miatt + PHP 5.0.4.
1. Először le kell tölteni a zip csomagot, és kitömöríteni egy könyvtárba, mondjuk a C:\PHP-be.
2. Első körben az a legfontosabb, hogy a php5ts.dll fájlt megtalálja az összes php program. A Windows alapból abban a könyvtárban keresi a dll-eket, amelyik könyvtárból indult a dll-t használó program, ezután a system32-ben, majd a path-ban keresi. A legegyszerűbb, ha az environment variables-ben a path-hoz hozzáadod a php könyvtárját.
3. Szintén az environment variablesben a változók közé érdemes berakni egy PHPRC nevű változót az értéke legyen a php elérési útja string. (ebben az esetben a php.ini-t nem kell a windows könyvtárba másolni) Alapból nincs php.ini fájl, ezért ilyen néven másolatot kell csinálni a php.ini-dist fájlról.
Az install.txt-ben egyébként ezt írják az ini fájllal kapcsolatban:
Copy your chosen
ini-file to a directory that PHP is able to find and rename it to
php.ini. PHP searches for php.ini in the following locations (in
order):
* PHPIniDir directive (Apache 2 module only)
* HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath
* The PHPRC environment variable
* Directory of PHP (for CLI), or the web server's directory (for
SAPI modules)
* Windows directory (C:\windows or C:\winnt)
4. Apache beállítása a httpd.conf állományban:
AddType application/x-httpd-php .php
LoadModule php5_module ''c:/php/php5apache.dll''
Ez a rész tapasztalataim szerint csak Apache 1.x.x alatt szükséges:
AddModule mod_php5.c
5. Most jöhet a php.ini:
extension_dir = ''c:\PHP\ext\''
majd az extensionök betöltő része:
pl.
extension=php_mysql.dll
extension=php_mysqli.dll
és persze Apache restart minden beállítás tesztelése során. Most arra nem akarok kitérni, hogy az Apache-ot hogyan kell beállítani.
A dll-ek és a php.ini ezzel a módszerrel egy helyen maradnak, egyszerűbbé válik a verzióváltáskor a PHP fájlok cseréje (a hibajavítások miatt ajánlott is frissíteni, és akkor célszerű az összes fájlt letörölni, és újra kicsomagolni a zip telepítőt, persze a php.ini-ről érdemes mentést csinálni.)
[Szerkesztve] -
faster
nagyúr
válasz
Tele von Zsinór
#3567
üzenetére
Ez a PHP verziójától is függ, melyik dll hol található, viszont nekem az a tapasztalatom a PHP telepítésével kapcsolatban, hogy a legrosszabb megoldás ez a dll-ek másolgatása. Leírhatom részletesen, hogy az én gépemen a PHP 5-höz mit kellett beállítani, hogy jól működjön az Apache-val együtt, de csak akkor van értelme leírnom, ha neked is az 5-ös verzió van meg.
-
faster
nagyúr
Egyébként komolyabb adatbáziskezelők ezt a dolgot nyelvi szinten támogatják, és tábla illetve indexparticionálás a neve:
Bővebben: link -
faster
nagyúr
Lehet, hogy vannak más módszerek, mysql alatt szvsz ennél sokkal fejlett módszer nincs nagyon. Ha lassú a hardver, kénytelen vagy a nagy adattábládat szétszedni kisebbre, mást nem nagyon tudsz csinálni. Mindenesetre nekem úgy tűnik, szinte mindig a mysql a szűk keresztmetszet, amikor lassú a szerver, legalábbis amikkel én találkoztam, ott mindig azzal volt gond. Egyébként lehet, hogy a mysql fokozottan érzékeny a tábla méretére, más adatbáziskezelőhöz képest.
Kezdetnek viszont a user<->hsz<->topic relációhármas tökéletes alap egy fórum beindításához.
[Szerkesztve] -
faster
nagyúr
Több 100 000 rekord felett már az sem megoldás, elvégre a hszek tartalmát ki kell olvasni a táblából, és ha mindezt másodpercenként többször kell, mert olyan sok a látogató, akkor ez már igencsak sok lemezművelet és memóriaigény.
Gondolj csak bele, hány hsz van a PH!-n, és hány oldallekérés a fórumon napközben, ezt szvsz semmilyen hardver nem bírná. Maga az index is nagyon nagy, hiszen pl. topikid-ra kéne mindenképp egy index, és topikból is lehet itt egy jópár.
[Szerkesztve] -
faster
nagyúr
Mert az a tábla, amelyik a hozzászólásokat tárolja, nagyon nagy lesz, és minden hszlistázás ezen a többezersoros táblán fog végigmenni. Több táblában kell tárolni a hszeket, esetleg egy nagy táblából több kisebb ideiglenes táblát kell generálni a lekérdezésekhez.
Attól függ, hány hozzászólást kell tárolni, és attól függ, ezeket a hozzászólásokat hányan nézik meg naponta. -
faster
nagyúr
A sessionkezelés egyszerű (tekintsünk most el attól, hogy pontosan hogy is működik).
Minden oldalt egy
session_start();
fv hívással kezdesz, ezután rendelkezésedre áll egy $_SESSION nevű tömb, ahova berakhatsz értékeket, illetve kiolvashatod, és ez a tömb a weblapod összes oldalán elérhető lesz. Tehát ha egyszer korábban a felhasználónak ellenőrizted a nevét és jelszavát, és ebbe a $_SESSION tömbbe ezt elraktároztad, bármelyik oldalon kiolvashatod, és megtudod, hogy korábban belépett-e vagy sem.
Mondjuk legyen ez a beléptető programrész váza:
<?
session_start();
/*adatbázis lekérdezés*/
if(/*név és jelszó stimmel*/) {
$_SESSION['auth'] = true;
}
A jelszavas oldalakat pedig így védheted:
<?
session_start();
if(!$_SESSION['auth']) {
// átirányítás a belépésre, vagy hibaüzenet
exit;
}
// az oldal védett része
[Szerkesztve] -
faster
nagyúr
válasz
Metalwarrior
#3099
üzenetére
<?
if($oldal == ''valami'') {
header(''Location: xyz.php?oldal=masikoldal'');
exit;
}
...
?> -
faster
nagyúr
válasz
Metalwarrior
#3095
üzenetére
<form action=''index.php'' method=''get''>
<input type=''hidden'' name=''oldal'' value=''valami''>
<input type=''text'' name=''szoveg''>
<input type=''submit'' value=''OK''>
</form> -
faster
nagyúr
Van bizony:
Bővebben: link -
faster
nagyúr
Az, hogy $uploaddir vagy $uploadfile a változó neve, amiben a fájl neve és elérési útja van, tökmindegy.
A move_uploaded_file egy egyszerű függvény, két paramétere van: A forrás, és a cél.
move_uploaded_file(''a/fajl/neve/es/eleresiutja'',''afajl/ujneve/es/eleresi/utja'');
A feltöltött fájl a $_FILES['userfile' ]['tmp_name' ]-ben található. A cél legyen a toltes könyvtár, és a fájlt az eredeti nevén mentsük el, amilyen néven a felhasználó tárolta saját gépén:
move_uploaded_file($_FILES['userfile' ]['tmp_name' ], ''toltes/''.$_FILES['userfile' ]['name' ]));
A move_uploaded_file egy függvény, aminek van visszatérési értéke, true, ha sikerült a fájlmozgatás, false, ha nem, így egyből látja a program, hogy összejött-e a fájlmozgatás, vagy sem. Erre az ellenőrzésre szolgál az if blokk.
if(
move_uploaded_file($_FILES['userfile' ]['tmp_name' ], ''toltes/''.$_FILES['userfile' ]['name' ]))) {
echo ''sikerult'';
}
else {
echo ''gáz van'';
}
Szerintem elég a relatív útvonalat megadni, tehát mondjuk a webrootban működik a te php feltöltő programod, akkor elég a ''toltes/fajnev'' formátum, hiszen neked azt nem kell tudnod, hogy ez a rendszerben belül miféle könyvtárszerkezene belül helyezkedik el (amit egyébként szintén ki lehet iratni egy echo $_SERVER[''DOCUMENT_ROOT'' ] -tal)
[Szerkesztve] -
faster
nagyúr
A basename egy egyszerű függvény, ami egy komplett elérési utat tartalmazó stringből kiszedi a fájl nevét:
Bővebben: link
Jelen példában csak azért van szükség rá, mert az eredeti fájlnven menti el a feltöltött fájlt a program, bár én eddig úgy tudtam, hogy a $_FILES['userfile' ]['name' ] csak a fájl eredeti nevét tartalmazza, nem teljes elérési utat.
Az uploaddir-be kell tenni a feltöltési könyvtár elérési útját, ez attól függ, hogy az adott webszerveren hol található ez a könyvtár. nem tudom, hogy abszolut elérési út kell-e vagy sem. Szerintem a relativ path is elég, tehát valami ilyesmi:
$uploadfile = ''fajlok/''.$_FILES['userfile' ]['name' ]; -
faster
nagyúr
Nem kell feltétlenül tömböt megadni, lehet neki stringet is, kétfajta üzemmódja van az strtr-nek:
Bővebben: link -
faster
nagyúr
str_replace, ha csak egy stringet kell cserélni, egyébként meg strtr, ha többet kell cserélni.
-
faster
nagyúr
if (isset ($kep) ) ...
$kep_type ...
$kep ...
Erre azt mondom, amit már elég sokszor leírtam, hogy NE ÍGY HASZNÁLD!, mert ez szolgáltatófüggő, helyette pl. $_POST[''kep'' ]-et írj!
Két rövid észrevétel:
Bővebben: link
$_FILES tömb és a move_uploaded_file használata.
$feltoltes_konyvtar= ''http://www.ak48.uw.hu/toltes'';
Ez így biztosan nem jó, mert itt a helyi fájlrendszerben kell elérési utat megadni, hasonlóan, mint amikor a te sajátgépeden megadsz egy elérési utat (pl. c:\windows\system32\), csak esetleg unix szintaktikával, és lehet, hogy csak a relatív útvonalat, (pl. toltes).
[Szerkesztve] -
faster
nagyúr
Enni, inni kell rendesen, különben nem tudsz jó programokat írni.

Nem tudom, pontosan mit írtak a $HTTP_POST_VARS-ról, a php manualban le van írva, hogy mit is tartalmaz ez a tömb. Egyébként, ahogy írtam, felejtds el a $HTTP_POST_VARS-t, használd helyette a $_POST-ot.
Bővebben: link
A $_POST egy meghatározott form submit összes mezőjének a tartalmát tartalmazza. A webszerver nem tárol el semmit az előző lekérdezésekből, amint bejön a lekérdezés a böngészőtől, a webszerver a paramétereket átadja a php programnak, majd miután a php program lefut, ezek törlődnek. A php programnak kell gondoskodni arról, hogyha valami információra későbbi lekérdezésekben szükség van, akkor azok megfelelő módon eltárolódjanak (cookie, session, file, adatbázis)
Szóval a lényeg a lényeg: Ezek a tömbök nem többféle böngészőből érkező postok eredményeit tárolják, hanem egy adott böngészőből érkező adott form submit eredményét, minden formmezőnek egy neki megfelelő tömbelemként.
példa:
<form method=''post''>
<input type=''text'' name=''nev''>
<input type=''text'' name=''lakcim''>
<input type=''text'' name=''jelszo''>
<input type=''submit'' value=''klikk''>
</form>
A form submit után az adatokat feldolgozó php program a következőket kapja
$_POST[''nev'' ]
$_POST[''lakcim'' ]
$_POST[''jelszo'' ]
bene a megfelelő mező értékével.
[Szerkesztve] -
faster
nagyúr
Egyszerre egy oldalon csak egy ember szavazhat. Mit kellene azon számolni?
Ha az összes szavazatot akarod, akkor azt el kell tárolni (lásd: vendégkönyv) fájlban vagy adatbázisban.
Minden egyes oldalletöltés, forsubmit egyedi, és semmit nem tud arról, hogy ki honnan hányszor nyomta meg a submit gombot egy másik böngészőben.
Kicsit nézz utána, hogyan működik a web szerveroldalról.
[Szerkesztve] -
faster
nagyúr
<form action=''<?php print $HTTP_POST_VARS;?>'' method=''POST''>
1. Az action attribútumot akkor kell használni, ha a form ereményét egy másik programban akarod feldolgozni, ha ugyanaz a program rajzolja ki a formot, és dolgozza fel a forsubmit eredményét, akkor nem kell action, el lehet hagyni.
2. A program ebben a formában az action=''Array'' fog megjelenni, ugyanis a $HTTP_POST_VARS egy tömb, ami tartalmazza az összes postolt paramétert. Nem is értem, hogy mi köze van a postolt paramétereknek a form action attribútumához.
3. A $HTTP_POST_VARS használata ellenjavallt, helyette inkább a $_POST vagy a $_REQUEST tömböt használd.
4.
if ( isset ( $neme))
Ebben a formában a kapott paraméter használata ellenjavallt, helyette inkább a $_POST[''neme'' ] -t javaslom. A böngésző által elküldött adatok (pl. az input name=''neme'') csak akkor jelennek meg egy, a te példádban $neme nevű változóban, ha a register_globals php paraméter be van kapcsolva, erre viszont jobb nem számítani, a legtöbb szolgáltatónál ez nincs.
Helyette a már említett $_POST[''valtozonev'' ] vagy a $_REQUEST[''valtoznev'' ] tömbök használata javasolt, ez mindig működik.
5. Hiányzik egy lezáró } kapcsos zárójel, így csak parse error van
6. $fiú <- ékezetes betűket lehetőleg ne használj változónévben, csak a baj van vele.
Mod: És VladimirR javasolt néhány egyszerűsítést az algoritmusban, érdemes átnézni azokat is.
[Szerkesztve] -
faster
nagyúr
válasz
kamikaze boci
#2993
üzenetére
Vagy php-ból kiküldesz egy redirect fejlécet a böngészőnek:
<?
header(''Location: oda.php'');
?>
[Szerkesztve] -
faster
nagyúr
Kivéve mondjuk egy fórum, vagy hír szerkesztő modulnál, ahol a hozzászólást/hírt elmented átalakítva,
Nem értem, mit mentek el átalakítva? Az eredeti szöveget mentem el, csak kiírásnál alakítgatom. Na jó, mondjuk mentés előtt egy substr és egy trim, de ez a max. Meg persze egy addslashes. -
faster
nagyúr
Úgy tünik a htmlspecialchars függvény előbb lecseréli ezeket a karaktereket kódra, majd a kódjukban lévő & jelet lecseréli &-ra...

Nem tudom, a rendszerben hol cserélődnek le ezek a unicode karakterek htmlescape kódra, persze a htmlspecialchars aztán az &-et mindenhol & amp;-ra cseréli, ez tény.
Ne kopizzanak wordot.
Ez a kóblokk nem jó semmire.
Nem elég, hogy az idézőjeleket lecseréli, valamiért a sortörések is eltűnnek, ha átmásolok egy ilyen blokkot az editorba.
[Szerkesztve] -
faster
nagyúr
válasz
woodpaul
#2974
üzenetére
A fetch_object egy objektumot ad vissza és $obj->mezonev formában érhető el egy adott mező. Ha tehát a result-ba objektumokat pakolsz, és aztán foreach-el mész rajta végig, akkor:
foreach($result as $res) {
echo $res->mezonev;
}
formában érsz el egy adott mezőt.
Nem 100% a programrész, álatlában fetch_array-t vagy fetch_assoc-ot szoktam használni, és most nincs időm tesztelni a kódot.
[Szerkesztve] -
faster
nagyúr
-
faster
nagyúr
Szóval lehet, hogy nevetséges, de úgy hidaltam át ezt a problémát, hogy azt modtam az (if (isset($szoveg)) ) után, hogy akkor ...
Egyszerűbb lett volna az új hozászólás fájlírását az if blokkba tenni, majd lezárni az if blokkot és a kiírást már ez után végezni. Így most kétszer van benne a kiíratás, dupla munka, dupla hibalehetőség.
[Szerkesztve] -
faster
nagyúr
de nem tudtam, hogy még a print() is előbb lefut.
Nem, a print nem $x hanem $eredmeny értékét írja ki. Amikor a print lefut $x értéke már 71, de $eredmeny -ben 70 marad.
A harmadi keredményünk meg 71. Miért is? Mert nem az eredeti $x-et hívtuk be, hanme a global segítségével a már megnöveltet.
Egy változó előző értékét sosem lehet behívni, az visszavonhatatlanul törlődik, mikor új értéket kap.
$x = 3;
function kiir() {
print($x);
}
kiir();
nem fog kiírni semmit. Egy függvényben a ''külső'' globális változók alaphelyzetben láthatatlanok, hacsak nem használod a fv-en belül a global kulcsót, ezzel explicit módon megadod, hogy te most ezt a globális $x változót elérhetővé akarod tenni a függvényen belül.
A te esetedben a harmadik érték azért 71, mert $x értéke 71. Amikor ehhez a programsor végrehajtásához ér a PHP interpreter, $x-ben épp 71 van.
$eredmeny = $x++;
Ez a 71 bemásolásra kerül az $eredmeny változóba, majd $x értéke 72 lesz , de ez már az $eredmeny változó értékét nem befolyásolja. Ezután print $eredmeny; 71 fog kiírni.
[Szerkesztve] -
faster
nagyúr
global $x ;
A global kulcsszó egy globális változót elérhetővé tesz egy függvényen belül. Minden olyan változó, amit nem függvényen belül definiálsz, globális változó lesz, tehát a program bármely részén hozzáférhetővé válik, amíg a program véget nem ér. Ez alól kivétel a függvény, amiben alapból csak a helyi változókat, és a függvény paramétereit látod.
A global $x után a megadott globális változó a függvényben is elérhetővé (írhatóvá ill. olvashatóvá) válik.
$eredmeny = $x++ ;
Itt két művelet zajlik le, egy értékadás és egy inkrementálás. Ez a programsor azt fogja eredményezni, hogy $x értéke bemásolódik $eredmeny-be, majd $x értéke eggyel nő. A program még az inkrementálás előtti értékkel fog számolni (ha az lenne, hogy $eredmeny = ++$x; akkor pont fordítva történne.)
Ezért is hívják ezt az operátort ++$valtozo preinkrementálásnak, ezt pedig $valtozo++ postinkrementálásnak.
Mivel $x értéke kezdetben 70, ezért $eredmeny-be is ez kerül, ezután $x értéke 71 lesz. A kivonást végző függvények mindig 100 - $x értékét írják ki, így gondolom nem okozmeglepetést az értékük.
A második $x-et növelő függvény pontosan azt csinálja, mint az első. 71 -et rak $eredmenybe, és utána növeli $x értékét. -
faster
nagyúr
válasz
Flash (The Original)
#2852
üzenetére
Ha a tmp könyvtárat létrehozod, akor a forráskódban már nem kell állítani semmit.
-
faster
nagyúr
válasz
Flash (The Original)
#2850
üzenetére
Nem egyszerűbb, mert akkor minden programban át kell állítani.
Egyszerűen létrehozol egy tmp nevű mappát a gyökérkönyvtárban.
[Szerkesztve] -
faster
nagyúr
válasz
Flash (The Original)
#2848
üzenetére
Létre kell hozni egy /tmp könyvtárat, vagy pedig a php.ini-ben kell átállítani egy már létezőre.
-
faster
nagyúr
válasz
Protezis
#2783
üzenetére
Azt akarom megvalósítani Mozilla alatt, amit IE alatt megcsináltam a kreten.hu fórumában (egyébként tök jó lenne, ha itt is működne)
Egyrészt, a kurzorpozícióba beszúrást, másrészt azt, hogyha egy szövegrész ki van jelölve a textareaban, akkor a kijelölt rész elé egy nyitótagot, mögé egy zárótagot tesz be.
[Szerkesztve] -
faster
nagyúr
válasz
Protezis
#2777
üzenetére
Nem is tudtam, hogy van Mozillára is megoldás, ez érdekes. Kiegyészítem vele a Kretén fórum scriptjét, mert az eddig csak explorer alatt tudta ezt. Remélem, megoldható az is, hogy ha ki van jelölve szöveg, akkor a nyitótagot az elejére, a zárótagot a végére illeszti, ahogy IE alatt is megy.
-
faster
nagyúr
Nemcsak a végére lehet, Explorerben a textrange objektum segítségével a kurzorpozícióba is be lehet szúrni, vagy pedig a kijelölt szövegrész elejére és végére rakni. Mint pl itt:
Bővebben: link -
faster
nagyúr
Így a legegyszerűbb, ha csak létrehozni akarod, de nem akarsz beleírni.
Bővebben: link
Ha írni is akarsz valamit bele, akkor meg az fopen a ''w'' paraméterrel.
Bővebben: link
Mod: Ej, ez a Lezli de gyors.
[Szerkesztve] -
faster
nagyúr
A fájlírás pedig szintén egyszerű:
$szoveg = ''Felhasználónév: ''.$_POST[''uname'' ].''\r\n'';
$szoveg .= ''Jelszó: ''.$_POST[''pass'' ].''\r\n'';
$szoveg .= ''továbbiadat: ''.$_POST[''adat1'' ].''\r\n'';
$szoveg .= ''továbbiadat: ''.$_POST[''adat2'' ].''\r\n'';
$szoveg .= ''továbbiadat: ''.$_POST[''adat3'' ].''\r\n\r\n'';
if ($fp = fopen(''fajlneve.txt'', ''a'')) {
fwrite($fp, $szoveg);
fclose($fp);
echo ''Nagyon zsír, működik!'';
}
else {
echo ''hiba'';
} -
faster
nagyúr
Hát így első körben:
Ha a form, ahonnan kapod a postolt adatot, így néz ki:
<form method=''post'' action=''p.php''>
<input name=''uname'' type=''text''>
<input name=''pass'' type=''text''>
<input type=''submit''>
</form>
akkor a p.php-ben így tudod kiírni:
<?
echo $_POST[''uname'' ];
echo ''<br />'';
echo $_POST[''pass'' ];
?> -
faster
nagyúr
válasz
burgatshow
#2687
üzenetére
Hát akkor $i+1-et kell kiírni, mint oldalszámot.
-
faster
nagyúr
válasz
burgatshow
#2685
üzenetére
$i = ''0'';
ez mi a szösz? Egyébként 0-tól indul az oldalszámozás.
[Szerkesztve] -
faster
nagyúr
válasz
burgatshow
#2644
üzenetére
Lehet.
unset($tomb[''elem'' ]);
vagy
array_splice(&$tomb,$elemsorszam,1);
[Szerkesztve] -
faster
nagyúr
válasz
burgatshow
#2632
üzenetére
Biztos nem találja a php4ts.dll-t. Másold be a sapi alkönyvtárba, vagy a \windows\system32-be, vagy add hozzá a path-hoz a php könyvtárját.
-
faster
nagyúr
válasz
burgatshow
#2613
üzenetére
Legfeljebb áttekinthetetlen lesz ha nagyon elbonyolódik a program.
-
faster
nagyúr
válasz
burgatshow
#2609
üzenetére
az strlen semmit nem ad!
Ezt elég nehéz elhinni. Jó lenne látni magát a programot. -
faster
nagyúr
válasz
burgatshow
#2597
üzenetére
textarea mezőről van szó?
-
faster
nagyúr
válasz
VladimirR
#2551
üzenetére
1. A foreach-es példát nem egészen értem, a programmal kiszedni akarod a magic_quotes_gpc ügyködését, vagy pedig slashelni akarod a kapott paramétereket? Ha slashelni akarsz, arra jó.
2. Ahogy Leslie írta, használd az urlencode vagy a rawurlencode függvényeket, ha egy stringet direkt URLbe paraméterként akarsz tenni.
3. Jól sejted, az x y tényleg az input=''image'' használatánál keletkezik, illetve sima x és y nevű változó ha az input type=''image''-nek nincs neve, ha van, akkor kepnev.x és kepnev.y nevű lesz a változó, amit aztán a PHP, mivel a pont változónévben nem szerepelhet $kepnev_x és $kepnev_y néven adja át a futó programnak. Arra jó, ha pl. térképet akarsz csinálni, akkor így megkaphatod a klikkelési xy koordinátákat. Szerveroldali imagemapnek is hvják ezt a technikát.
[Szerkesztve] -
faster
nagyúr
válasz
VladimirR
#2545
üzenetére
A backslash karaktert az idézőjel az aposztróf és a backslash karakter elé szúrja be a PHP minden get, post, cookie változónál, amennyiben a php.ini-ben a ''magic_quotes'' paraméter on-ra van állítva, így az adatbázis lekérdezésekbe egyből beilleszthetők ezen paraméterek. Mivel ez a beállítás szerverfüggő, ezért én saját függvényt használok, amely a magic_quotes értékétől függően berakja a backslasheket vagy sem, hasonlót lehet a stripslashes-sel is csinálni.
function h_slashes($str) {
return ini_get(''magic_quotes_gpc'')?$str:addslashes($str);
} -
faster
nagyúr
válasz
VladimirR
#2507
üzenetére
Akkor ehhez nem kell CURL, hanem vagy egy url-t összeraksz és egy locationnal odairányítod a böngészőt (ez GET metódus), vagy pedig összeállítasz egy kis html oldalt hidden mezőkkel, és javascripttel elpostolod a formot, actionba pedig beálítod a megfelelő ph-s oldalt.
CURL esetén nem a böngésződ küldi el a form adatait, hanem a php program küldi el, és persze ez a program fogja kapni a submit eredményét, amit aztán fel lehet dolgozni, és továbbpassszolni a böngészőnek (gyakorlatilag egy HTTP proxyként viselkedik). Ilyenkor végig a te programod urlje fog a böngésző címsorában látszani.
[Szerkesztve] -
faster
nagyúr
válasz
VladimirR
#2505
üzenetére
Na, it vagyok. Hát, ha azt akarod, hogy az urlben a ph urlje jelenjen meg, akkor nincs szükség curl-re, de a mostani kereső is ezt csinálja ami az oldaladon van. A base href pont arra kelett, hogy a relatív url-ek,amivel a stylesheet fájlja,és a képek vannak a ph forrásába beágyazva azt a proharder.hu név alatt keresse a böngésző.
(Kérdezz nyugodtan, te legalább érdekeseket kérdezel, nem olyat, ami a manual belinkelésével meg lehet oldani)
Annyira jó ilyenkor kispált hallgatni...
[Szerkesztve] -
faster
nagyúr
válasz
VladimirR
#2502
üzenetére
Ez az, ami megy:
<?
$data = array(
''swhere'' => ''/rios3_forum.php?id=30253&mod=40'',
''swhat'' => ''teszt'',
''stype'' => '''',
''ssep'' => '''',
''sid'' => ''''
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ''http://prohardver.hu/rios3_redir.php?act=search'');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$x = curl_exec($ch);
echo ''<base href=\''http://prohardver.hu\''>''.$x;
curl_close($ch);
?>
A followlocation nem arra kell, hogy a böngészőt átirányítsa (arra a header(location:..) való, de azt a te scriptednek kell küldenie a böngésző felé), hanem hogy ha a meghívott oldalban egy redirect van, akkor a curl kövesse-e ezt. Az eredményt aztán úgyis a te scripted kapja, tehát a kliens böngésző továbbra is a te oldalad url-jét fogja látni.
Nekem most mennem kell.
[Szerkesztve] -
faster
nagyúr
válasz
VladimirR
#2496
üzenetére
Ha csak ennyi a test.php forrása, akkor hogy kerül oda egy banner az oldal tetejére? Az a gyanúm, hogy az srv.hu szerver csinál egy redirectet egy framesetet tartalmazó oldalhoz, ami aztán az alsó framebe tölti be a te programodat, persze ilyenkor már csak az url-ben levő változó megy tovább.
Mod: A redirect a gond, próbáld így:
curl_setopt($ch, CURLOPT_URL, ''http://free.srv.hu/c/y/cyla/test.php?id=teszt'');
[Szerkesztve]
Aktív témák
- Kingston HyperX Fury 2x4GB 2133MHz DDR4 kit / Beszámítás OK! / Akciós Ár!
- Eladó Sony PlayStation 5 (Slim) 1TB Digital Edition 2026.12-ig garanciával!
- ASRock B250M-HDV / MSI B150 PC Mate
- 250GB Sata SSD-k / Samsung 840 Evo / 850 Evo / CM871a / Kingmax /
- ASUS ROG G70S retro gamer laptop 17 dual GPU SLI ritka különlegesség
- Apple iPad Air 2 (A1567) 32GB Wi-Fi + Cellular Arany
- PANASONIC Toughbook CF-53,i5-3340M,4GB RAM,500GB HDD,DVD,WIN10
- Samsung Galaxy A23 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- ÚRIS10!!! RAMÁRON! LEGION 5 i7-13650HX 16GB RAM 512GB SSD RTX 5070 8GB 2K OLED 165Hz 500NIT
- HIBÁTLAN iPhone 14 Pro Max 128GB Deep Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS4457
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


,0,5000))));


