Netkaloz Posted April 8, 2007 Posted April 8, 2007 @jojo19 Úgy emlékszem azt olvastam errõl, hogy hibás néhány kód a könyvben, szóval nem a te készülékedben van a hiba.Mindenesetre kérdezz meg hozzáértõket is errõl. A kijavításban nem tudok még segíteni, én is most ismerkedem a Php-vel. Meg a többivel is.
Mezofi Posted April 8, 2007 Posted April 8, 2007 @jojo19 Az imagecreate() függvény-t nem ismeri fel az EasyPhp. Ezért okoz hibát. Az olyan scripteket amik ezt a függvényt használják, mindíg felrakom egy netes tárhelyre és ott próbálom ki.
Peredi Zoltán Posted April 9, 2007 Posted April 9, 2007 @jojo19 Inkább az a baj, hogy szabadalmi problémák miatt a legtöbb PHP változatból már eltávolították a GIF képek létrehozásának lehetőségét. De például PNG formátumú kép létrehozható az általad írt kóddal: <?php header("Content-type: image/png"); $kep = imagecreate(200,200); ImagePng($kep); ?> és pl. az IE ki is rajzolja a 200x200-as területet, amiben még nincs semmi. Ha valami van is a képben (az alanti kód szerint egy háttérszín), <?php header("Content-type: image/png"); $kep = imagecreate(200,200); $background_color = ImageColorAllocate ($kep, 0, 250, 0); ImagePng($kep); ?> akkor már minden böngésző elfogadja, és felrakja a – zöld – négyzetet. Ha pedig a készítendő kép nevét is megadod: <?php header("Content-type: image/png"); $kep = imagecreate(200,200); $background_color = ImageColorAllocate ($kep, 250, 0, 0); ImagePng($kep, 'ujkep.png'); ?> akkor akármilyen képmegjelenítő programmal is láthatóvá teheted az ujkep.png nevű - most éppen piros - négyzetet.
h.arpad Posted April 15, 2007 Posted April 15, 2007 Na, azért akkora gond még nincs. PHP-val nagyon jól kezelhetõ a GIF is.
Peredi Zoltán Posted April 15, 2007 Posted April 15, 2007 Kezelhető. De nem lehet új képet létrehozni. Legtöbb változatban már nem működik GIF-re az imagecreate().
bvoneki Posted April 15, 2007 Posted April 15, 2007 Sziasztok! Egy olyan php kódot szeretnék létrehozni, aminek fájlok letöltésénél volna szerepe. Például olyan alkalmazásnál, ahol korlátozni szeretném a hozzáférést. Tehát mondjuk ha a download.php-t a következõ paraméterrel hívom meg: download.php?fajlid=987&jelszo=alma akkor letölthetõ lenne egy fájl. Olyasmi, mint a http://www.hatterkepek.hu oldalon a picdownload.php íl: http://www.hatterkepek.hu/picdownload.php?...9/honda-004.jpg
h.arpad Posted April 16, 2007 Posted April 16, 2007 Ehhez a legjobb session-t használni. A session változó meglétét ellenőrzöd, ami akkor kap értéket, ha az űrlapba jól írja be a jelszót a letöltő. Amit te írsz az sem rossz, úgy is meg lehet oldani, csak kevésbé biztonságos. Ebben az esetben az $_GET tömbben találod a lekérdező karakterlánc tartalmát (pl. jelszó). Ha ez helyes, akkor megadod a letöltési liket a felhasználónak. Pl. ez a jelszó: gumimaci És így néz ki a lekérdező karakterlánc: dowload.php?fileid=valami.kit&passwd=gumimaci Akkor ez a kód (persze addig bővíted, amíg szeretnéd ) : <?php if ( ( isset $_GET['passwd'] ) && (! empty $_GET['passwd'] ) && ( isset $_GET['fileid'] ) && ( ! empty $_GET['fileid'] ) ) { $file = $_GET['fileid']; if (is_file ($file) ) { if ( $_GET['passwd'] = 'gumimaci' ) { print '<a href="$fajl" target="_self">A letöltéshez kattints ide</a>.'; } else { print 'Nincs elég jogosultságod a letöltéshez!'; } } else { print 'Az általad kért fájl nem található a szerveren.'; } } ?> Ilyesmire gondoltál?
bvoneki Posted April 17, 2007 Posted April 17, 2007 Huh, ezzel a jelszós dologgal azt hiszem sajnos elvontam a figyelmet az elõl, ami a lényeg lenne. Tehát ha minden stimmel (létezik a fájl, jelszó rendben) akkor nem egy linket szeretnék adni a felhasználónak, ami elvezeti egy titkos helyre (pl. 8d683jkd32/valami.kit, és a webszerveren természetesen tiltva lenna a mappák listázása), hanem magával a php kóddal szeretném átküldeni a fájlt. Kérdésemet elküldtem a www.coffeecup.hu-nak is, és nagy örömömre ma segítõkészen megválaszolták kérdésemet. Okulásképpen bemásolom ide is levélváltásunkat (protokollok nélkül), jól jöhet ez még másnak is: Egy php-s fájl készítésekor akadt egy problémám, és Önök tudnának rá segíteni! Rövid leszek: hogyan mûködik a http://www.hatterkepek.hu oldalon a picdownload.php (kép)fájlközvetítése? Tehát ha például meghívom a http://www.hatterkepek.hu/picdownload.php?...awasaki-002.jpg linket, akkor ugye a php elküldi a merevlemez megfelelõ helyérõl (normal/www/Berta/20051007_195640) a kawasaki-002.jpg képfájlt. De vajon ezt milyen kóddal lehet megvalósítani? Szíves segítségüket elõre is köszönöm! A funkció megvalósításához a legegyszerûbb mód a readfile() php függvény meghívása: http://hu.php.net/readfile Itt lényegében csak meg kell adni egy útvonalat a helyi fájlrendszeren, amely fájlnak a tartalmát a standard kimenetre küldi, böngészés során ez gyakorlatilag maga a böngészõ. Három fontos dologra kell még figyelni. Ha egy JPG fájl tartalmát küldi el egy PHP scripten keresztül, akkor ezt jelezni kell a böngészõnek a megfelelõ HTTP fejléc kiadásával (még a readfile() elõtt): header('Content-type: image/jpeg'); Szintén fontos megmondani a böngészõnek, hogy mekkora fájlt is fog küldeni, illetve mentés során milyen fájlnevet kínáljon fel (ellenkezõ esetben a php script fájlnevét kínálja majd fel, ami meglehetõsen zavaró lehet): header("Content-length: ".filesize($path)); header("Content-Disposition: attachment; filename=kep.jpg"; Komoly biztonsági rést okozhat továbbá egy rosszul beállított szerveren, ha nem ellenõrzi a $_GET tömbben kapott elérési útvonalat. Ilyenkor könnyedén letöltheti az ártó szándékú támadó például egy password fájl tartalmát egy keres.php?file=/etc/passwd formában.
h.arpad Posted April 19, 2007 Posted April 19, 2007 Kezelhető. De nem lehet új képet létrehozni. Legtöbb változatban már nem működik GIF-re az imagecreate(). Pontosan milyen "változatokra" gondolsz? A PHP-nak nincsenek külön "disztribúciói". Vagyis elvileg minden használható, amit a dokumentáció leír. Hogy aztán abból a szolgáltató mennyit telepít/engedélyez, az már más kérdés. az itthoni szerveren nekem tökéletesen működik az 5.2.1-es verzióval.
Peredi Zoltán Posted April 19, 2007 Posted April 19, 2007 Nem tudom, melyik verzió vagy változat vagy szolgáltató a ludas. Olvastam valahol errõl a GIF problémáról. De tény, hogy itthon (PHP 4.3.6) meg az ATW-n nem fut, az UW-n viszont igen. A PNG-re vonatkozó kód pedig mindhárom helyen rendben.
h.arpad Posted April 19, 2007 Posted April 19, 2007 Ha ingyenes a szolgáltató nem csodálom, de ha fizetős akkor sem, mert a legújabb stabil Debian-ra még várni kell (abban jelenik meg majd a PHP5), és sok szerver Debian alapú. Hallottam a GIF-es vitát, elvileg ezért karolták fel a szabad szoftverek is a PNG-t (arról nem is beszélve, hogy általában jobb). Sajnos kisebb animációk terén a GIF-nek még nincs igazi versenytársa. Arról nem is beszélve, hogy amit az IE 6 művelt a PNG-vel, az egyszerűen nevetséges volt.
Aneurysm Posted April 28, 2007 Posted April 28, 2007 Tök kezdõ vagyok php-ban és azt szeretném megkérdezni hogy egy weboldal php kódját ki lehet-e olvasni valahogy? Csak mert készítettem egy jelszavas védelmet egy pofonegyszerû if ($pass == "jelszó") összehasonlítással és nem tudom mennyire biztonságos. Köszönöm!
Kiskalóz Posted April 28, 2007 Posted April 28, 2007 Nem. A php kód a szerver oldalon lefut, és az user már csak a kimenetet látja.
Kiskalóz Posted April 28, 2007 Posted April 28, 2007 Attól függ mit értesz biztonság alatt. A kódot nem fogják látni. Az 100%. (ezalól kivételt képez a szándékossan megjelenített kódok /* */ illetve //)
h.arpad Posted May 2, 2007 Posted May 2, 2007 Tehát teljesen biztonságos? Nem. A jelszót ugye valahogy át kell adni a PHP-nak. A HTTP protokoll pedig nem biztonságos, útközben le lehet hallgatni. SSL-kapcsolattal viszont titkosítható. Ennek persze semmi köze a PHP-hez, mert maga a kód semmiképp sem fog látszani. Ellenben nem mindegy, hogy milyen változóban és hogyan kerül a jelszó a kódhoz
Oke Posted May 5, 2007 Posted May 5, 2007 (edited) Mi lehet a hiba? A hibaüzenet: Parse error: parse error, unexpected $ in /admin/viccek/viccek.php on line 40 A 40. sor az utolsó. <? $kapcsolat = mysql_connect('127.0.0.1','xlabor','jelszó'); mysql_select_db('xlabor',$kapcsolat); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> <title>Viccek</title> <link rel="stylesheet" type="text/css" href="http://www.xlabor.hu/stilus.css" /> </head> <body> <p align="center"><font id="focim">Viccek<br /></font></p> <div style="padding: 10px;"> <? $parancs = "SELECT * FROM vicc ORDER BY id"; mysql_query($kapcsolat); $szin = "#f3f2f8"; while ($sor = mysql_fetch_array($eredmeny)) { if ($szin == "#f3f2f8") { $szin = "#f3f2f8"; } else { $szin = "#f3f2f8"; ?> <?= $sor["tartalom"] ?> <br /><br /> <? } <-- !!! ez az else-é! !!! ?> </div> </body> </html> <? mysql_close($kapcsolat); ?> Forráskód berakásánál, tanuljátok meg használni a code jelölõt! Edited May 5, 2007 by Spányik Balázs
Mezofi Posted May 5, 2007 Posted May 5, 2007 Amikor a lap utolsó sorában van a hiba, legtöbbször egy lezáratlan ciklus van az oldalban. Mint most is. A while ciklus nincs lezárva. Továbbá csak kinézet miatt, használd a szabvány formát, mert az igazán jól konfigurált szerverek nem hajtják végre a <? ?> közti scriptet. Így kellene: <?php ?>
h.arpad Posted May 6, 2007 Posted May 6, 2007 <?= $sor["tartalom"] ?> Ezt én nem tudom hová tenni a fenti kódban. Ha ez értékadás, miért kezdõdik egyenlõség-jellel, és ha egy sor, akkor miért nincs a végén pontosvesszõ? Kipróbáltam az ftp-függvényeket. Minden jól mûködne, csakhogy... Adott egy form, ahol megadom egy input mezõben a fájl elérési útját (vagy megadja az, aki fel szeretne tölteni). Ezt a fájlt azonban a PHP nem látogató gépén fogja keresni, hanem a szerveren, és nem tölt fel semmit. Ha meg azt írom be az input type-ba, hogy "file", akkor HTTP-n keresztül megy a feltöltés... Tudtok erre valamit, amivel ezt áthidalhatom?
Oke Posted May 6, 2007 Posted May 6, 2007 Köszönöm. Egy hibaüzenet most is van. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /admin/viccek/viccek.php on line 23 @h.arpad Az egyenlõségjel a jelen esetben a print-tel egyezik meg. (Vagyis ki akarom íratni az adott sor tartalom változóját.)
Mezofi Posted May 6, 2007 Posted May 6, 2007 @Oke A lekérdezésednek vagy nincs eredménye, vagy még nem kapcsolódtál az adatbázishod, és ezért nincs eredménye a lekérdezésnek. Ja, meg van. $parancs = "SELECT * FROM vicc ORDER BY id"; mysql_query($kapcsolat); Mi lenne, ha így lenne? $parancs = "SELECT * FROM vicc ORDER BY id"; $eredmeny=mysql_query($parancs ); Szerintem jobban érezné magát a while ciklus is.
h.arpad Posted May 6, 2007 Posted May 6, 2007 Az egyenlõségjel a jelen esetben a print-tel egyezik meg. (Vagyis ki akarom íratni az adott sor tartalom változóját.) Hát ezt hol tanultad? Csak azért kérdezem, mert nálam nem mûködik. Igaz, hibát sem kapok.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now