ugrás a tartalomhoz

Include változó paraméterrel

MSzilveszter · 2005. Júl. 10. (V), 17.36
Sziasztok!

Sokadszor nem tudok valamit rendesen megcsinálni, mert az include parancsnál nem tudom elérni, hogy $ paramétert hívjon be. Eddig találtam egyéb megoldást, de mostmár meguntam, hogy nem jövök rá a hibára. Tudtok nekem segíteni? itt a forráskód:

így hívom a funkciót:
jogellenoriz($akkreditacio, $akreditacioe, $akkreditacio);

ez meg maga a funkció:
function jogellenoriz($mihezjog, $miigaz, $mittartalmaz)
  {

if ($adminfelhasznalo[.$mihezjog.]=="1")
{
$miigaz="true";
$mittartalmaz.='.php'
include ($mittartalmaz);
print('
<table>
<tr>
<td width="700" class="menu2">
| | <a href="#lapteto">Lap tetejére ugrás</a> | |
</td>
<tr>
</table>');
}
  }
 
1

mi a hibaüzenet?

Hojtsy Gábor · 2005. Júl. 10. (V), 17.54
Először is nagyon körültekintőnek kell lennie include használatával változó fájlnév szerint, mert mindenféle biztonsági réseket rejthet. Másodszor is a változó alapján történő fájl betöltésnek mennie kellene, úgyhogy jó lenne, ha a konkrét hibaüzenetet is jeleznéd!
2

itt a hiba üzenet...

MSzilveszter · 2005. Júl. 10. (V), 18.08
...Parse error: parse error, unexpected T_INCLUDE in admin2_2.php on line...

MSzilveszter - http://www.netnap.hu
3

Értelmezzük az üzenetet

Hojtsy Gábor · 2005. Júl. 10. (V), 18.12
Ugye ez azt jelenti, hogy az 'include' kulcsszó (és nem ami utána van!) váratlanul érte a feldolgozót. Várta a pontosvesszőt. Az előző sor végén.
4

doksiolvasás esetleg??

Őry Máté · 2005. Júl. 10. (V), 18.20
if ($adminfelhasznalo[.$mihezjog.]=="1")
ez mi a csuda? Mi az $adminfelhasznalo[ értéke? mi a ] értéke?
És amit akartál csinálni valójában: honnan kap értéket ez az $adminfelhasznalo? Sztem nagy baj van, ha egy sorban ennyi hiba van..
5

az adminfelhasználó

MSzilveszter · 2005. Júl. 10. (V), 18.31
az adminfelhasználó utáni részt, csak figyelmetlenségből gépeltem ide, ott nincsenek pontok az eredetiben, csak okos fejjel nem másoltam, hanem ide gépeltem... legalább látszik, nem vagyok lusta, csak rosszul gépelem le a kódot :(

if ($adminfelhasznalo[$mihezjog]=="1") ez eredetileg az akart lenni, hogy a $mihezjog lenne az adminfelhasználó fetch array-jel kiszedett oszlopának a neve, de azt hiszem ez így nem jó.

HA VAN ; az előző sor végén, akkor nincs hibaüzenet nem csinál semmit, egyszerűen tovább megy.

MSzilveszter - http://www.netnap.hu
6

nem jó helyen keresed a problémát

zila · 2005. Júl. 10. (V), 18.42
Ha a szintaktikai hibát kiküszöbölted és a programod fut (csak éppen nem azt teszi amit szerinted tennie kéne) akkor a hiba az include-dal behívott kódrészletben lehet. Esetleg azt is beírhatnád ide (de azért inkább másold, mert minek fussunk felesleges köröket, ha netán elgépelnéd megint :)

üdv,
Zila
7

az a fájl, amiről most

MSzilveszter · 2005. Júl. 10. (V), 18.59
az a fájl, amiről most szó van:
<?php
 
require_once("connect.php");

$adminfkeres = mysql_query("SELECT * from admin_felhasznalo WHERE fnev='" . $adfnev . "'");
$adminfelhasznalo = mysql_fetch_Array($adminfkeres);

function jogellenoriz($mihezjog, $miigaz, $mittartalmaz)
  {
if ($adminfelhasznalo[$mihezjog]=="1")
{
$miigaz="true";
$mittartalmaz.='.php';
include ($mittartalmaz);
print('
<table>
<tr>
<td width="700" class="menu2">
| | <a href="#lapteto">Lap tetejére ugrás</a> | |
</td>
<tr>
</table>');
}
  }
if($kod<>$adminfelhasznalo[jelszo])
{
print('<script language="JavaScript" type="text/JavaScript">
alert("Érvénytelen felhasználói név vagy jelszó! További infóért keresdd meg Miklovicz Szilveszter!");
history.back(1);
</script>
');
die();
}

print
('
<table width="700">
<tr>
<td width="700" class="cimsor">
NetNap Admin - verzió: 2.0.3
</td>
</tr>
<tr>
<td width="700" class="menu2">
<a href="#cikkinsert">Cikkfeltöltés tetejére ugrás</a> | | <a href="#galeriainsert">Galériafeltöltés tetejére ugrás</a> | | <a href="#extrainsert">További módosítások tetejére ugrás</a>
</td>
</tr>
</table>
');

jogellenoriz($cikk, $cikkinzerte, $cikkinsert);
jogellenoriz($galeria, $galeriainserte, $galeriainsert);
jogellenoriz($cikkmodositas, $cikkmode, $cikkmodosit);
jogellenoriz($impresszum, $impresszuminserte, $impresszummode);
jogellenoriz($akkreditacio, $akreditacioe, $akkreditacio);

//admin2_2.php vége
?>


és a cikk, galeria fájlok léteznek, eddig is használtam őket, és eddig behívta őket, csak most már meguntam azt a sok ronda sort, és ezért akarom functionba ölteni azt az egy if es részt, ami a functionban van.

a cikkinsert.php remekül üzemel, ha a paraméter helyére beírom minden hova a rendes adatokat, akkor jó. azt hiszem ott az if (admin....[]...) résszel van a baj, csak nem tudom, mi lehet.

Konkrétan most annyit csinál, hogy a három linket, a lap tetejére még kiírja (cikk feltöltés, kép feltöltés, meg extra azt hiszem), de a többit már nem csinálja. mintha ott lenne a vége a fájlnak a function behívása elött.
MSzilveszter - http://www.netnap.hu
8

a lényeget!

Hojtsy Gábor · 2005. Júl. 10. (V), 19.32
Tessék már átgondolni, hogy merre mennek a változó értékek, és csak azt kiemelni, nem az egész kódot! Abból, amit látunk, nem derül ki, hogy a $cikkinsert, stb. változókba mi kerül. A kód alapján nem kerül beléjük semmi, ezért a ".php" nevű fájlt próbálja szépen betölteni, ami nem csoda, hogy nem működik.
9

' ' tényleg van ma velem valami....

MSzilveszter · 2005. Júl. 10. (V), 19.57
igazad van. ahol a function-t behívom ott $..., helyett '...', kell minden hova. de hiába. nem változott semmi. a legelején ki van emelve a problemám, s közben én is sorra találom a hibákat :(
Köszönöm természetesen a segítséget.

MSzilveszter - http://www.netnap.hu
10

dehogynem változott!

Hojtsy Gábor · 2005. Júl. 10. (V), 20.26
Hogy ne változott volna. Mivel ha jól követem le a dolgokat, folyamatosan javul az include meghívására használt érték, a hibaüzenetnek is változnia kell, amit kapsz. Gondolom nem találja meg a fájlt. Kapcsold be a hibamegjelenítést (display_errors), és kérj minden hibát (error_reporting = E_ALL) ha ez nem így lenne. Rögtön kapsz egy csomó hibát, amit ki kellene javítanod :)
11

baj hogy nincs baj

MSzilveszter · 2005. Júl. 10. (V), 21.31
Hibaüzenet: Nem jön semmilyen hibaüzenet. egyszerűen nem jön semmi, mintha nem futna le eleve az "if" szerkezet. és nem mondja azt, hogy rossz az érték. most pontosan így néz ki az aktuális kód:
function jogellenoriz($mihezjog, $miigaz, $mittartalmaz, $adfnev2)
  {
$adminf2keres = mysql_query("SELECT '" .$mihezjog. "' from admin_felhasznalo WHERE fnev='" . $adfnev2 . "'");
$sql = mysql_fetch_Array($adminf2keres);

if ($adminfelhasznalo[0]=="1")
{
$miigaz="true";
$mittartalmaz.='.php';
include ($mittartalmaz);
print('
<table>
<tr>
<td width="700" class="menu2">
| | <a href="#lapteto">Lap tetejére ugrás</a> | |
</td>
<tr>
</table>');
}
  }

ezzel hívom pedig be:
jogellenoriz('cikk', 'cikkinserte', '$cikkinsert', $adfnev);


MSzilveszter - http://www.netnap.hu
12

figyeld már mit csinálsz!

Hojtsy Gábor · 2005. Júl. 10. (V), 21.47
Ha nem mondta volna Őry Máté is még délután, hogy $adminfelhasznalo sehol nincs a kódban (és azóta se lett), akkor se érteném, hogy miért csodálkozol, hogy nem fut le a kód, de így aztán...

De azt sem gondolnám, hogy '$cikkinsert.php' nevű fájlod van, tehát a dollár szerepel a fájl nevében. Pedig a kód ilyen nevű fájlt fog keresni, ha már bejut az ifbe.
13

rendben. azt hiszem, mindent...

MSzilveszter · 2005. Júl. 10. (V), 23.10
Azt hiszem, mindent kijavítottam, amit eddig mondtatok (és szégyellem is, hogy ennyi hibát csináltam, már rég jártam így :( ), és az eredmény: nem áll ki hibával, DE nem is írja ki az oldalt, amit include-oltatok. van esetleg valami más megoldás, include on kívül? bár.

Még egyszer bemásolom ide a kódot, hátha megint találtok benne valamit, aztán igérem, nem zavarlak benneteket vele :)

function jogellenoriz($mihezjog, $miigaz, $mittartalmaz, $adfnev2)
  {
$adminf2keres = mysql_query("SELECT " .$mihezjog. " FROM admin_felhasznalo WHERE fnev='" . $adfnev2 . "'");
$adminsql = mysql_fetch_Array($adminf2keres);

if ($adminsql[0]=="1")
{
$miigaz="true";
include ($mittartalmaz);
print('
<table>
<tr>
<td width="700" class="menu2">
| | <a href="#lapteto">Lap tetejére ugrás</a> | |
</td>
<tr>
</table>');
}
  }


Ha beírom az include után a paraméter helyére magát az értéket, amit felvesz a paraméter, akkor se megy, pedig a fájl létezik, ott van, és működik gyönyörűen. :O

És elnézést az összevisszaságomért, de valahogy nem vagyok magammál ma :)

MSzilveszter - http://www.netnap.hu
14

nem is PHP-t töltesz be(?)

Hojtsy Gábor · 2005. Júl. 10. (V), 23.17
Hát ha a függvény paraméterezése nem változott (most ezt sem tudjuk), akkor nem csoda, hogy nem jó, mert nincs a fájlnévben php kiterjesztés. Különben azt sem tudjuk, hogy már bejutottál-e az ifbe. Nekem pedig már találgatni nincs erőm helyetted...
15

echo, print_r

tiku I tikaszvince · 2005. Júl. 10. (V), 23.38
mostmár nem nagyon tudom kibogarászni hogy mit is szeretnél csinálni, de azt el tudom mondani, hogy én hogy szoktam megoldani az ilyen "megoldhatatlannak" látszó problémákat.
Mielőtt megvizsgálok egy változót kiíratom, csak hogy lássam, egyáltalán azt tartalmazza-e, amit szeretnék. Ha lekérdezéses probléma van, akkor a SELECT után az eredményt úgy ahogy van kiíratom. Esetedben

$adminsql = mysql_fetch_array($adminf2keres);
print_r($adminsql);
és egyből meglátod, hogy egyáltlán, megvan-e az az érték, amit szeretnél.
Plusz, mivel a lekérdezést is változókból pakolod össze, lehet azt is meg kellene vizsgálni, hogy érvényes mezőt kérsz-e le.
Most, ha nem változott a függvényhívásod, akkor ez a lekérdezés áll össze:

SELECT cikk FROM admin_felhasznalo WHERE fnev='" . $adfnev2 . "'";
Biztos hogy ezt akarod? Véletlenül nem valami olyat vizsgálsz, amit elfelejtettél, a cikk mező mellett lekérni?

U.I.: végső esetben, tedd el egy kicsit a feladatot, pihenj egy keveset, és utánna térj vissza rá. Pihenés után "csinosítgasd ki" a kódot, hátha úgy könnyebben észreveszed, hogy mi a probléma.

TikuVoltam
Ma is holnap fekszünk le, mint tegnap
16

-

MSzilveszter · 2005. Júl. 11. (H), 08.09
megnéztem a
SELECT cikk FROM admin_felhasznalo WHERE fnev='" . $adfnev2 . "'";

kódot, még mielött ide beírtam, és azt adja vissza, amit szeretnék. egyet vagy 0-át. ha egy az érték, akkor enged be az ifbe, (if ....=="1") megoldással.
Megfogadtam a tanácsod, aludtam rá egyet, s most újra neki futok. ha megvan a működő kód, majd jelentkezek.
megpróbáltam kiírattatni azt a lekérdezést, eredménye: Array ( [0] => 1 ) , ami nekem jó, mert én azt mondtam neki, hogy ha eggyel egyenlő. márpedig a táblában egy van. bár lehet, félreértelmezem megint.

Ja igen. és a legújabb hibaüzenet:
Warning: jogellenoriz(cikkmodosit.php): failed to open stream: No such file or directory in admin2_2.php on line 15
a cikkmodosit.php és az admin2_2.php egy és ugyan azon a könyvtárban vannak pedig.

Köszönöm a segítséget.


MSzilveszter - http://www.netnap.hu