Archief - [Drupal] Login

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

-BVR-

Legacy Member
Hallo

Ik zou willen dat ik vanboven op m'n website (gemaakt op drupal 7) een link heb naar de inlogpagina. Als er iemand echter ingelogd is moet deze boodschap veranderen in 'Ingelogd als <user>'. Ik heb dit als volgt proberen ineen boxen maar het werkt niet:

PHP:
<?php
global $user;
if ($user->uid) {
    print "Welkom <?php
global $user;
print_r($user);
?>";
} 
if (!$user->uid) {
    print "<a href=\"?q=user\">Login of registreer</a>";
} 
?>
</div>

Ik krijg dan allemaal errors terug. Enige ideeën?

-BVR-

Legacy Member
Misschien wat meer moeten proberen, voor de geïnteresseerden de oplossing:

PHP:
        <?php
global $user;
if ($user->uid) {
    print "Ingelogd als ";
	print_r($user->name);
} 
if (!$user->uid) {
    print "<a href=\"?q=user\">Login of registreer</a>";
} 
?>

demon326

Legacy Member
BramVroy zei:
Hallo

Ik zou willen dat ik vanboven op m'n website (gemaakt op drupal 7) een link heb naar de inlogpagina. Als er iemand echter ingelogd is moet deze boodschap veranderen in 'Ingelogd als <user>'. Ik heb dit als volgt proberen ineen boxen maar het werkt niet:

PHP:
<?php
global $user;
if ($user->uid) {
    print "Welkom <?php
global $user;
print_r($user);
?>";
} 
if (!$user->uid) {
    print "<a href=\"?q=user\">Login of registreer</a>";
} 
?>
</div>

Ik krijg dan allemaal errors terug. Enige ideeën?


Altijd de foutmeldingen plaatsen :).

Code:
<?php $GLOBALS['user']->name; ?>

Probeer dit eens, hoewel ik niet weet of het zal werken, daar ik geen D7 install heb :)

Tyfius

Legacy Member
Dat hij hier de errors moet plaatsen was een goed idee. Dat hij $GLOBALS moet proberen dat is een minder goed idee.

Maar omwille van zijn 2de post ga ik ervan uit dat hij daarmee bedoelde dat hij de oplossing gevonden had.

Tot slot nog een tip: Drupal voorziet handige en veilige functies om links aan te maken. Kijk eens naar de functie l().

dJeez

Legacy Member
En dan nog een opmerking. Wat je beschrijft lijkt mij eigenlijk ideaal om in een custom module te zetten, als block.

-BVR-

Legacy Member
Bedankt voor de replies, maar ik had het dus opgelost (zie tweede post)

Met jullie comments heb ik het versimpeld tot
PHP:
<?php
global $user;
if ($user->uid) {
    print "Ingelogd als <span id=\"gebruiker\">$user->name</span>";
} 
else {
      print "<a href=\"?q=user\">Login of registreer</a>";
}    
?>
Vraag: is dat erg dat ik nu die print_r vervangen heb? Ik snap het verschil niet goed tussen print en print_r.

Tyfius, die functie l() krijg ik niet aan de praat. Ik heb het volgende geprobeerd, maar als je niet ingelogd bent wordt er niets weergegeven:

PHP:
        <?php
global $user;
if ($user->uid) {
    print "Ingelogd als ";
	print_r($user->name);
} 
else {  l(t('Registreer of login'), '?q=user', array('attributes' => array('title' => 'Klik hier om in te loggen of te registreren'))); }
?>

Ik ben ook niet bekend met die functie, dus als jij de fout ziet mag je het me laten weten :)

DieselPower

Legacy Member

-BVR-

Legacy Member
Ge kunt ook iets Google maar er dan nog niet achterkomen wat wat juist doet hé. Bij print_r heb ik enkel gevonden dat dit vooral voor development- en tweakingissues gebruikt wordt, maar ja, daar weet ik nog niets mee. Daarom zeg ik ook 'ik snap het verschil niet goed' i.p.v. 'kan iemand me zeggen wat ... is'.

Tyfius

Legacy Member
De functie l() returned een string. Je moet die zelf nog afdrukken en je moet gebruik maken van de paden zonder "q=" mee te geven.
Code:
print l(t('Registreer'), 'user', array(...

Alle PHP functies staan ook uitgelegd in de PHP manual natuurlijk. En print_r is daar geen uitzondering op.

Maar, voor Drupal bestaat een beter alternatief. Als je de devel module installeert en activeert krijg je toegang tot extra functies. dpr is een wrapper rond dprint_r, maar dpm is een functie die je data zal weergeven als een message. Dus bovenaan je website waar de andere status messages kunnen komen.

-BVR-

Legacy Member
Bedankt Tyfius, de uiteindelijke code die ik nu heb is:
PHP:
<div id="tologin">
<?php
global $user;
if ($user->uid) {
    print t('Ingelogd als ');
    print l($user->name, 'user', array('attributes' => array('id' => array('gebruiker')))); 
    print " | ";
    print l(t('Uitloggen'), 'user/logout');
} 
else {
      print l(t('Login of registreer'), 'user');
}    
?>
</div>
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan