[PHP]Variabele in een include script

Pagina: 1
Acties:
  • 1.475 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Zillion01
  • Registratie: Juni 2001
  • Laatst online: 22-11-2023

Zillion01

Obey your screen!

Topicstarter
hoi ik ben nog een redelijke n00b op gebied van php, maar heb een soort scriptje in elkaar gevogeld obv andere scriptjes waarbij een pagina buiten phpBB alleen bepaalde info laat zien als de gebruiker ook ingelogd is in phpBB.
Mijn vraag is, los van onderstaande, hoe kun je een variabele meegeven aan een included script.php?

De scriptjes zijn :

1. het pagina1.php script die kijkt of iemand ingelogd is en zoja hetgene toont wat een ingelogd iemand mag zien.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php define('IN_PHPBB',true);
$phpbb_root_path = "phpbb/"; // set path to phpBB files
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_LOGIN); // initiate session
init_userprefs($userdata); // load user prefs
//
// End session management
//
if($userdata['session_logged_in'])
{ // user is logged in
echo "hello you're logged in<br />";
echo "you can view this!!";
//include('logout_br.php');
$logout_name = $userdata['username'];
$logout_url_sid = 'login.'.$phpEx.'?logout=true&amp;sid=' . $userdata['session_id'];
echo $lang['Logout'];
echo " [ ";
$link = "<A HREF='http://www.XXX.com/phpbb/" . $logout_url_sid . "'>$logout_name</A>";
echo $link;
echo " ]";

}  else //user is not logged in
{
//$CURRENT_PAGE_URL="../restricted.php";
echo "hello you are NOT logged in<br />";
include('logon_br.php');
}
?>


2. Het inlog_br.php scriptje dat geinclude wordt op bovenstaande pagina

code:
1
2
3
4
5
6
7
8
9
10
11
<FORM action=phpbb/login.php method=post target=_self>
      <TABLE cellSpacing=1 cellPadding=3 width="106"
        border=0><TBODY>
        <TR>
          <TDvAlign=center align=middle height=28 width="90"><INPUT size=12 name=username value="Username"><br>
            <INPUT type=password size=12
            name=password value="Password"><br>
            Auto logon <INPUT type=checkbox name=autologin><br>
            <INPUT type=submit value="Log in" name=login>
            <input type=hidden name="redirect" value="../pagina1.php">
</TD></TR></TBODY></TABLE></FORM>


Nu, om te voorkomen dat de gebruiker na het inloggen terecht komt op het forum (index.php van phpbb) is een redirect toegevoegd naar pagina1. Mijn vraag is hoe kan ik dat oplossen met een variabele. Dus iets van in pagina1.php $redirect="../pagina1" en dat dat ingevoegd kan worden in <input type=hidden name="redirect" value=$redirect> in inlog_br.php. Dit werkt zo niet, maar ik kom er niet echt uit hoe dat wel kan. Vermoedelijk is het een domme vraag, maar ik zit er nu al een paar uur op te proberen.

dank!

Acties:
  • 0 Henk 'm!

Anoniem: 112587

Het is echt lastig om nou precies uit je post op te maken wat je wil (al is het maar omdat je het tweede script 'inlog_br' noemt en in het bovenste script 'logon_br' geinclude wordt.

Dan maar een algemeen antwoord; het script dat je include kan gewoon beschikken over alle variabelen, functies e.d. van het script waarin ie geinclude werd, dus een voorbeeldje:

script1.php
code:
1
2
3
4
<?php
$var = 'Hallo';
include('script2.php');
?>


script2.php
code:
1
2
3
4
5
6
7
8
9
<html>
<head>
[..]
</head>
<body>
<p><?php echo $var; ?></p>
</body>

</html>


Bij het aanroepen van script1.php krijg je te zien:

code:
1
2
3
4
5
6
7
8
9
<html>
<head>
[..]
</head>
<body>
<p>Hallo</p>
</body>

</html>


In jouw geval moet je dus (als ik je goed begrijp) i.p.v.
code:
1
<input type=hidden name="redirect" value="../pagina1.php">
code:
1
<input type=hidden name="redirect" value="<?php echo $redirect; ?>">
gebruiken.

[ Voor 42% gewijzigd door Anoniem: 112587 op 10-02-2006 21:29 ]


Acties:
  • 0 Henk 'm!

Anoniem: 98889

PHP:
1
include($phpbb_root_path . 'extension.inc');


Een stuk code of include file de extensie .inc geven is *de* manier om je vatbaar voor misbruik te maken.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:47

Creepy

Tactical Espionage Splatterer

Anoniem: 98889 schreef op vrijdag 10 februari 2006 @ 21:31:
PHP:
1
include($phpbb_root_path . 'extension.inc');


Een stuk code of include file de extensie .inc geven is *de* manier om je vatbaar voor misbruik te maken.
En een klein beetje onderbouwing mag ook hoor ;) Zolang zo'n .inc file buiten de webroot staat of met een .htaccess is afgeschermd is er echt helemaal niks aan de hand.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Zillion01
  • Registratie: Juni 2001
  • Laatst online: 22-11-2023

Zillion01

Obey your screen!

Topicstarter
In jouw geval moet je dus (als ik je goed begrijp) i.p.v.
code:
1
<input type=hidden name="redirect" value="../pagina1.php">
code:
1
<input type=hidden name="redirect" value="<?php echo $redirect; ?>">
gebruiken.
:) Ja dat werkt dank je wel! Het idee was dus goed, alleen de syntax niet, moet dus ff ge-echood worden. Pfff ik moet nog veel leren.
Creepy schreef op vrijdag 10 februari 2006 @ 21:42:
[...]

En een klein beetje onderbouwing mag ook hoor ;) Zolang zo'n .inc file buiten de webroot staat of met een .htaccess is afgeschermd is er echt helemaal niks aan de hand.
De .inc file staat in de folder phpbb, het script staat daar zelf niet in, is dat dan toch nog onveilig? Hmm het is een ding van phpbb zelf, maar wat is er dan onveilig aan (ik=n00b). dank :)

Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 00:14

orf

maar wat is er dan onveilig aan (ik=n00b).
Als je webserver niet geconfigureerd is om .inc als PHP te parsen, dan zal de webserver bij een aanroep vanuit de browser plain text laten zien. Dan kun je dus alle code gewoon in je browser lezen.

Je kunt een .htaccess bestand in de map zetten om .inc als php te laten parsen, of simpelweg te deny-en voor iedereen. Je kunt ook de extentie aanpassen naar bijvoorbeeld .inc.php.
Je weet dan alsnog dat het om een include bestand gaat, maar je webserver spuugt het altijd uit als geparste php code.

Acties:
  • 0 Henk 'm!

  • Zillion01
  • Registratie: Juni 2001
  • Laatst online: 22-11-2023

Zillion01

Obey your screen!

Topicstarter
Ah ha. TX :) idd het wordt als tekst getoond, ik zal me dus es eens verdiepen in .htaccess, want daar weet ik ook geen donder van en ik wil zeer zeker een veilige site.

Nou volgens mij heb ik nou een mooi scriptje om ervoor te zorgen dat gebruikers ingelogd moeten zijn in phpBB alvorens bepaalde content te mogen zien op een pagina buiten het forum.

Ik heb alleen nog een wens, dat is als gebruikers een foute login of password intypen dat zij niet terecht komen in phpBB forum waar in phpBB stijl komt "You have specified an incorrect or inactive username, or an invalid password." en dan het login scherm in phpBB. Ik wil dus dat er opnieuw ingelogd wordt in de pagina buiten phpBB. Enige suggestie?

Hier nogmaals de code till sofar ;)

De pagina buiten phpBB die checkt of je wel ingelogd bent om content te mogen zien :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php define('IN_PHPBB',true);
$phpbb_root_path = "phpbb/"; // set path to phpBB files
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//tell the logon_br and logout_br script which page to redirect back to instead of forums index
$CURRENT_PAGE_URL="../pagina_buiten_phpBB.php";

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_LOGIN); // initiate session
init_userprefs($userdata); // load user prefs
//
// End session management
//
if($userdata['session_logged_in'])
{ // user is logged in
echo "hello you're logged in<br />";
echo "you can view this cuz you're logged in!!";

$logout_url_sid = 'phpbb/login.'.$phpEx.'?logout=true&amp;sid=' . $userdata['session_id'];
include('logout_br.php');

}  else //user is not logged in
{
echo "Login :<br />";
include('logon_br.php');
}
?>


De login form logon_br.php:

code:
1
2
3
4
5
6
7
8
9
10
11
<FORM action=phpbb/login.php method=post target=_self>
      <TABLE cellSpacing=1 cellPadding=3 width="106" 
        border=0><TBODY>
        <TR>
          <TDvAlign=center align=middle height=28 width="90"><INPUT size=12 name=username value="Username"><br>
            <INPUT type=password size=12 
            name=password value="Password"><br>
            Auto logon <INPUT type=checkbox name=autologin><br>
            <INPUT type=submit value="Log in" name=login>
            <input type=hidden name="redirect" value="<?php echo $CURRENT_PAGE_URL; ?>">
</TD></TR></TBODY></TABLE></FORM>


De logout form logout_br.php :

code:
1
2
3
4
<FORM action=<?php echo $logout_url_sid; ?> method=post target=_self>
<input type="submit" class="mainoption" name="logout" value="Logout">
<input type=hidden name="redirect" value="<?php echo $CURRENT_PAGE_URL; ?>">
</form>

[ Voor 17% gewijzigd door Zillion01 op 10-02-2006 23:02 ]


Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Kojak2001 schreef op vrijdag 10 februari 2006 @ 22:58:
Ah ha. TX :) idd het wordt als tekst getoond, ik zal me dus es eens verdiepen in .htaccess, want daar weet ik ook geen donder van en ik wil zeer zeker een veilige site.
Als die .inc van phpBB is, kunnen mensen die code toch wel zien hoor. Deze staat namelijk gratis en publiekelijk downloadbaar op hun site. ;)
Kojak2001 schreef op vrijdag 10 februari 2006 @ 22:58:
[...]
Heel veel tekst en code
[...]
Je hebt dit:
code:
1
FORM action=phpbb/login.php method=post target=_self>

Dus het échte inloggen gebeurt op phpbb/login.php... Dan moet je daar opzoeken wat er gebeurt als er een incorrecte username/password is ingevoerd en dan zelf bedenken hoe je daar verder mee om wilt gaan.

United we stand, and divided we fall

Pagina: 1