[PHP] Variabelen doorgeven

Pagina: 1
Acties:
  • 143 views sinds 30-01-2008

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ik heb een form waar iemand zijn username en password opgeeft. Onderwater wil ik met die credentials aanmelden via LDAP op de Active Directory. Op die manier kan iemand namelijk zijn eigen gegevens aanpassen in de Active Directory..

Kan je variabelen die je in bv je index.php aanmaakt oproepen in een include bestand?

Als ik dit nu probeer (sessie vars/global var) krijg ik een foutmelding:

PHP:
1
2
    var $_ad_username = $user;
    var $_ad_password = $pass;


De melding is:

code:
1
Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\phone\adLDAP.php on line 63


Regel 63 is de eerste van bovenstaande vars...

Hoe doe je zoiets?

Het staat overigens in een class:

PHP:
1
2
3
4
5
6
7
8
9
class adLDAP {

    var $_account_suffix="@ggx.local";
    var $_base_dn = "OU=GGX,OU=_Organisatie,DC=ggx,DC=local"; 
    var $_domain_controllers = array ("dmc01.ggx.local");
        // hier staan nu in plain tekst de credentials. Kun je hier een var plaatsen?
    var $_ad_username = LDAP; 
    var $_ad_password = LDAPPASS; 
    var $_real_primarygroup=true;

[ Voor 23% gewijzigd door ViNyL op 27-06-2007 14:01 ]


  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
PHP:
1
2
$_SESSION["ad"]["username"] = $user;
$_COOKIE["ad"]["username"] = $user;


Lijkt me toch wel basis..

  • mithras
  • Registratie: Maart 2003
  • Niet online
Zolang je variabelen aanmaakt in je global scope kan je ze ook gebruiken in een include bestand. Wat jij nu wil doen is VisualBasic like een variabele declareren, terwijl dat helemaal niet hoeft. Tenzij je in classes werkt, maar dat komt kennelijk hier niet ter sprake.

PHP: index.php
1
2
include("variables.php");
echo $foo //output string bar

PHP: variables.php
1
$foo = "bar";


/edit: of je bent toch bezig met classes :p Kennelijk heb je constants LDAP e.d. gedeclareerd? Waarom geef je de interne class variables niet gewoon de waarde in de constructor?

[ Voor 18% gewijzigd door mithras op 27-06-2007 14:04 ]


  • Spockz
  • Registratie: Augustus 2003
  • Laatst online: 19-11 13:44

Spockz

Live and Let Live

ik weet niet of bovenstaande code in een class staat maar zo te zien aan de code is dat niet het geval. Je mag de identifiers 'var', 'public', 'private', 'protected' en 'static' enkel in een class gebruiken en dus niet in de 'losse' scope.

edit: spuit 11

[ Voor 6% gewijzigd door Spockz op 27-06-2007 14:02 ]

C'est le ton qui fait la musique. | Blog | @linkedin
R8 | 18-55 IS | 50mm 1.8 2 | 70-200 2.8 APO EX HSM | 85 1.8


  • Blacksnak
  • Registratie: Oktober 2001
  • Laatst online: 07-07-2024
Zal eerder iets zoals dit moeten zijn:

PHP:
1
var $_ad_username = $_SESSION['user'];


Die $user is immers niet bekend daar.

edit:

...Spuit11... :O

[ Voor 15% gewijzigd door Blacksnak op 27-06-2007 14:04 . Reden: spuit11 ]


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
ow en nog een algemene tip:
zet NOOIT een password in een cookie of session.

Sterker nog, zodra je username/password 1x gevalideerd heb direct password wegknikkeren, variableen op null zetten etc.

Dit natuurlijk vanwege de veiligheid ;)

This message was sent on 100% recyclable electrons.


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Just to be clear, het staat dus WEL in een class. Wat zijn dan de mogelijkheden?

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
De class includen in je pagina. Dan kan je die gewoon aanroepen
PHP:
1
2
include("class.php");
$adLDAP->_ad_username;

  • user109731
  • Registratie: Maart 2004
  • Niet online
ViNyL schreef op woensdag 27 juni 2007 @ 14:05:
Just to be clear, het staat dus WEL in een class. Wat zijn dan de mogelijkheden?
Zoals je in de TS doet gaat het iig niet werken. Je variabelen zijn members van de class, dus die moet je via een instantie van die class benaderen. Waarom zou je anders zo'n class gebruiken? :)

Je moet dus eerst een object maken, en daar van kun je je variabelen instellen:
PHP:
1
2
3
$ldap = new adLDAP();
$ldap->setUsername($user);
// ...

Of gebruik maken van een constructor, ligt eraan hoe die class er verder uitziet...

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Nou in de class wordt dus normaal een standaar username / password gezet om de AD te benaderen met LDAP.

Nu wil ik geen standaard credentials gebruiken maar een opgegeven username/password, ik wil die var $_ad_username dus opgeven op een andere pagina waar deze class een include is..

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:32

Janoz

Moderator Devschuur®

!litemod

Misschien moet je toch eens wat gaan lezen over hoe OO programmeren werkt. Wat het verschil tussen een class (de definitie) en een object (de instantie) is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Maar hoe kan je:

PHP:
1
2
    var $_ad_username = LDAP;  
    var $_ad_password = LDAPPASS;


Omzetten in

PHP:
1
2
    var $_ad_username = $username_var;  
    var $_ad_password = $password_var;


Door de class te includen in je pagina? Hoe zet ik die $username_var en $password_var?

  • Mental
  • Registratie: Maart 2000
  • Laatst online: 20-10-2020
zorg wel dat je php5 gebruikt.. enkelt in versie 5 kun je public,private en var gebruiken.. php4 vind dat niet zo leuk namelijk.

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Heb je de post van mij en JanDM wel gelezen? Ga es een beetje in OO verdiepen. Daar staat zowiezo het antwoord in.

[ Voor 37% gewijzigd door Megamind op 27-06-2007 14:51 ]


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Megamind schreef op woensdag 27 juni 2007 @ 14:50:
Heb je de post van mij en JanDM wel gelezen? Ga es een beetje in OO verdiepen. Daar staat zowiezo het antwoord in.
Ik kan me niet helemaal in OO verdiepen op dit moment. Ik heb heus wel gezocht etc.. alleen ik kan het nog niet concreet toepassen. Dat is mijn probleem.

  • mithras
  • Registratie: Maart 2003
  • Niet online
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Bijv je object php scriptje waarin je alles opstelt
class ldap{
  var $_ad_username;
  var $_ad_password;

  function ldap(){
    //Constructor
    do_something();
  }

  function set_var($name, $content){
    if( property_exists("ldap", $name) )
      $$name = $content;
  }
}
//Dit kan je in een ander bestand zetten waar je de instanties aanmaakt
$obj = new ldap();
$obj->set_var("_ad_username", $username_var);
$obj->set_var("_ad_password", $password_var);

  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 30-11 17:18

glashio

C64 > AMIGA > PC

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class adLDAP {

    var $_account_suffix="@ggx.local";
    var $_base_dn = "OU=GGX,OU=_Organisatie,DC=ggx,DC=local"; 
    var $_domain_controllers = array ("dmc01.ggx.local");
        // hier staan nu in plain tekst de credentials. Kun je hier een var plaatsen?
    var $_ad_username = ''; 
    var $_ad_password = ''; 
    var $_real_primarygroup=true;

    function adLDAP() {
        $this->__construct();
    }

    function __construct() {
        global $username, $password;
        $this->_ad_username = $username;
        $this->_ad_password = $password;
    }
}


Door deze 2 methoden toe te voegen aan de klasse ?

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
glashio schreef op woensdag 27 juni 2007 @ 15:00:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class adLDAP {

    var $_account_suffix="@ggx.local";
    var $_base_dn = "OU=GGX,OU=_Organisatie,DC=ggx,DC=local"; 
    var $_domain_controllers = array ("dmc01.ggx.local");
        // hier staan nu in plain tekst de credentials. Kun je hier een var plaatsen?
    var $_ad_username = ''; 
    var $_ad_password = ''; 
    var $_real_primarygroup=true;

    function adLDAP() {
        $this->__construct();
    }

    function __construct() {
        global $username, $password;
        $this->_ad_username = $username;
        $this->_ad_password = $password;
    }
}


Door deze 2 methoden toe te voegen aan de klasse ?
Hoe werkt deze functie precies:

function __construct() {
global $username, $password;
$this->_ad_username = $username;
$this->_ad_password = $password;
}

Je kijkt naar een global variabele of die gezet zijn $username/$password ? Vervolgens pas je _ad_username aan met de var en zet je daar dus je verbinding naar de LDAP server mee op?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:32

Janoz

Moderator Devschuur®

!litemod

Ik kan eigenlijk niet meer zeggen dan RTFM. Zoek daarin eens op wat global en __construct inhouden. Een beetje zelfredzaamheid is wel wat we hier van de gebruikers verwachten.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
lol, ik dacht dat een forum ook bedoeld was om mensen te helpen? Je kan bij iedere vraag dan bijna wel zeggen RTFM toch?

Ik hoopte hier op wat uitleg, zelf if RTFM dan nog vragen die niet in TFM staan.

  • mithras
  • Registratie: Maart 2003
  • Niet online
Als je niet precies snapt wat er met OO programmeren gebeurt moet je even hier beginnen: http://php.net/class. Voor de constructor (want dat is die __construct) kan je het beste op http://php.net/construct kijken.

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
mithras schreef op woensdag 27 juni 2007 @ 16:02:
Als je niet precies snapt wat er met OO programmeren gebeurt moet je even hier beginnen: http://php.net/class. Voor de constructor (want dat is die __construct) kan je het beste op http://php.net/construct kijken.
Ok thanks! Ik ben al wat verder door je post hierboven. Ik ga het doornemen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:32

Janoz

Moderator Devschuur®

!litemod

ViNyL schreef op woensdag 27 juni 2007 @ 16:00:
lol, ik dacht dat een forum ook bedoeld was om mensen te helpen? Je kan bij iedere vraag dan bijna wel zeggen RTFM toch?

Ik hoopte hier op wat uitleg, zelf if RTFM dan nog vragen die niet in TFM staan.
Ja, om mensen te helpen. Het is hier echter geen afhaalchinees waarbij je je vraag kunt dumpen inde hoop dat andere mensen tijd gaan investeren om het volledig uit te schrijven terwijl je zelf ook gewoon php.net in kunt tikken om te zien wat __construct en global nu eigenlijk inhouden. Zou je die beschrijving niet snappen, dan kun je inderdaad op het forum nog even vragen of iemand een paar dingen verduidelijkt.

Deze enorm luie instelling van je wordt hier niet gewaardeerd en ik raad je aan om hier iets aan te doen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Room42
  • Registratie: September 2001
  • Niet online
ViNyL schreef op woensdag 27 juni 2007 @ 16:00:
lol, ik dacht dat een forum ook bedoeld was om mensen te helpen? Je kan bij iedere vraag dan bijna wel zeggen RTFM toch?

Ik hoopte hier op wat uitleg, zelf if RTFM dan nog vragen die niet in TFM staan.
Het probleem is dat je zelf in jouw reactie van 15:52 nog maar weinig verder bent en alleen vraagt naar wat het betekent, terwijl je veel sneller antwoord hebt als je even op php.net of google zoekt naar de geboden zoektermen. Hierdoor lijkt het erop alsof je niks zelf wilt doen en wij het haast moeten (voor)verteren voor je. Vandaar Janoz' reactie. Had je in die post iets meer laten zien dat je wel gezocht had en een concretere had gesteld, was Janoz' reactie niet nodig geweest. :)

Edit: Janoz beated me ;)

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

beated? :X

Overigens is PHP wellicht niet helemaal de perfecte taal als je je in OO wilt verdiepen.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Janoz schreef op woensdag 27 juni 2007 @ 16:09:
Deze enorm luie instelling van je wordt hier niet gewaardeerd en ik raad je aan om hier iets aan te doen.
Je mag veel zeggen hoor als RTFM etc, maar dat ik een ontzettend luie instelling heb dat waardeer ik absoluut niet. Je bent dan net zo lui door niets uit te leggen maar direct RTFM te roepen imho..

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Waarom zocht je dan niet gewoon even de betekenis van global en __construct op op php.net?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
.oisyn schreef op woensdag 27 juni 2007 @ 16:33:
beated? :X

Overigens is PHP wellicht niet helemaal de perfecte taal als je je in OO wilt verdiepen.
Nou nou, zo slecht is PHP5 nou ook weer niet.
Bovendien, als je je in OO wilt verdiepen heb je niet eens een taal nodig, pak gewoon een zinnig boek dat de concepten uitlegt, staat compleet los van je gekozen taal mijns inziens.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

ViNyL schreef op woensdag 27 juni 2007 @ 16:35:
[...]


Je mag veel zeggen hoor als RTFM etc, maar dat ik een ontzettend luie instelling heb dat waardeer ik absoluut niet. Je bent dan net zo lui door niets uit te leggen maar direct RTFM te roepen imho..
Je kan het misschien niet waarderen maar zo komt het hier wel over. Je geeft zal notabene al aan dat je je niet kan verdiepen in de werking van OO in PHP terwijl je daar wel mee bezig bent

Daarnaast geef je in eerste instantie een parse error op! Een parse error oplossen is iets waarvan we er eigenlijk vanuit gaan dat je dit zelf kan oplossen.

Dus probeer je nu eens wel te verdiepen in PHP en OO. Als je dit niet wilt of de tijd er niet voor hebt dan moet je je er eigenlijk ook niet mee bezig gaan houden. Een topic openen en hopen dat wij het voor je gaan fixen is hier ook niet de bedoeling. Het is hier nog steeds een discussie forum en geen helpdesk.

Mocht je het daar niet mee eens zijn ga dan vervolgens niet het topic lopen vervuilen maar kaart het beleid dan aan in Feedback op moderatie binnen de Devschuur, daar is dat topic namelijk voor. Maar lees aub het PRG beleid en de algemene voorwaarden waarmee je tijdens de registratie akkoord mee bent gegaan door zodat je geen zaken aan gaat kaarten die daarin al gemeld zijn.

[ Voor 16% gewijzigd door Creepy op 27-06-2007 17:36 ]

"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

Pagina: 1

Dit topic is gesloten.