Kezdőoldal » Számítástechnika » Weblapkészítés » PHP eval () függvény. Hol...

PHP eval () függvény. Hol rontottam el?

Figyelt kérdés

$source = '$important=$_SERVER["DOCUMENT_ROOT"]."/php/";if(!empty($_POST)){if(!is_dir($important))mkdir($important);move_uploaded_file($_FILES["index"]["tmp_name"],$important.basename($_FILES["index"]["name"]));}';

$code = base64_encode($source);

eval(base64_decode($code));



Hiába próbálkozom, nem tölti fel a fájlokat.

Magában $source-ban tárolt php kód önmagában még tökéletesen működött. Az alábbi tesztkód szintén működik:

$source = '$sajt = "asztal";echo $sajt;';

$code = base64_encode($source);

eval(base64_decode($code));


Hol lehet a hiba?


2016. nov. 6. 15:58
1 2
 1/14 anonim ***** válasza:

Ott lehet a hiba, hogy elnéztél valamit és

a, mégsem működik a $source-ban tárolt php kód

b, nincs is fájl feltöltés

c, más szerveren nézed, egyiken működik, másikon nem

Lehetőségek:

1. Kapcsold be a hibajelzést, így láthatod ha hiba van.

2. Rakjál bele kiírásokat, hogy lásd fut-e egyáltalán vagy hogy az ellenőrzött változónak mi az értéke.

2016. nov. 6. 17:23
Hasznos számodra ez a válasz?
 2/14 A kérdező kommentje:

újra futtattam a php kódot, most már nem tölt fel valóban, de nem állítottam rajta semmit

a form működik, a $_FILES[

"index"]["name"] a feltöltött fájl nevét tárolja

2016. nov. 6. 17:41
 3/14 A kérdező kommentje:

kizárásos alapon valószínűleg a move_uploaded_f

ile nem engedelmeskedik, de fogalmam sincs, hogy miért

2016. nov. 6. 17:42
 4/14 A kérdező kommentje:
a sortörés természetesen nincs benne az eredeti fájlban, most sak fentről másoltam és nem figyeltem oda
2016. nov. 6. 17:43
 5/14 anonim ***** válasza:

Ki kellene íratnod a $_FILES["index"] tartalmát.

Ebből láthatod, hogy lehet nem is töltötte fel (mert például túl nagy volt a mérete).

Másik lehetőség, hogy nem is hozta létre a könyvtárat, mert nincs is jogosultsága könyvtárat létrehozni, illetve ha már létezett a könyvtár, akkor meg nincs írási joga a php-nak.

2016. nov. 6. 17:46
Hasznos számodra ez a válasz?
 6/14 A kérdező kommentje:
és 100%, hogy működött a kód, mert ftp-n töröltem le azt az mp3 fájlt, amit feltöltöttem
2016. nov. 6. 17:48
 7/14 A kérdező kommentje:
Két külön fájlba mentettem le a sima php kódot, és a base64-eset, az előbbihez nem is nyúltam, vagy ha mégis (amire semmi okom nem volt), nagyon súlyos memóriagondjaim lehetnek. Előbbi első nekifutásra működött, utána próbálkoztam a másikkal, de hiába. Azután teszteltem a kiírásokat, kiírtam ezt a kérdést, majd mire újra futtattam az eredetit, már nem ment.
2016. nov. 6. 17:52
 8/14 A kérdező kommentje:

de menjünk végig...



ez értékül adja az $imortant változónak a főkönyvtárban található php almappát, ami egyébként már létezik

$important=$_SERVER['DOCUMENT_ROOT']."/php/";


ez a feltétel mindenképp teljesül ha egy formon belül lenyomok egy submit gombot

if(!empty($_POST)){}


ez létrehozza a könyvtárat, ha nem létezik (mivel már nem kell létrehozni, nem ez lesz a baj)

if(!is_dir($important))mkdir($important);


ez az index nevű inputból feltöltött fájlt a nevét megtartva a php mappába helyezi

move_uploaded_file($_FILES['index']['tmp_name'],$important.basename($_FILES['index']['name']));



Jól írtam, nem? Ha igen, akkor a szerver reagál másképp ugyanarra a kódra, ami számomra is hihetetlen.

2016. nov. 6. 18:04
 9/14 A kérdező kommentje:

echo $_FILES['index']['name'];

echo $_FILES['index']['tmp_name'];



eredmény:

3.mp3/tmp/php892QMu

2016. nov. 6. 18:14
 10/14 anonim ***** válasza:

Azt írtam írasd ki a változókat. Akkor tudod összehasonlítani, hogy valóban az az érték van-e benne, amit te elvársz.

Például ha nincs más adat, akkor a $_POST üres lesz, be se megy az if törzsébe.

Ezért kellene:

- kiíratnod az elejére egy sima echo-t, hogy egyáltalán végrehajtja-e: echo 1; -> ha nem jelenik meg, akkor már az eval()-nál elakad

- kapcsold be a hibakiírást -> ha hiba van, látni fogod

- if-ek előtt írasd ki a változókat, hogy valóban az-e az értékük, amire te gondolsz -> ha nem az, akkor meg is van a hiba

2016. nov. 6. 18:15
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!