Avatar billede wtd_nielsen Nybegynder
15. september 2004 - 21:10 Der er 27 kommentarer og
1 løsning

menu gemt i en session variable?

hej. Jeg vil gerne ha en login-form som skal vises til brugere der ikke er logget ind på min side. Når brugeren så er logget ind så skal login-formen forsvinde og så skal en personlig menu dukke op. Jeg kan dog ikke få lov til at gemme min login-form i en variable:
<?
session_start();
    //menuen som skal komme frem hvis man IKKE er logget ind
    $loginmenu="
<table width="70" border="0" cellspacing="2" cellpadding="0">
<FORM METHOD="POST" ACTION=\"http://login.php\">
<tr>
<td>Brugernavn</td>
</tr>
<tr>
<td><input type="text" name="brugernavn" size="18"></td>
</tr>
<tr>
<td>Adgangskode</td>
</tr>
<tr>
<td><input type="password" name="password" size="18"></td>
</tr>
<tr>
<td align="left" valign="middle"><input type="submit" name="submit" value="login"></td>
</tr>
</FORM>
</table>)";
?>
Der skal så komme en if sætningen som tjekker en $_SESSION['loget_in']som så bestemmer hvilken menu der skal vises. min "brugermenu" kan jeg godt smide en som en variable:
<?
$brugermenu="
<p><strong>Personlig Menu:</strong></p>
<ul>
<li><a href=\"http://secretA.php\">Profil</a></ul>";
?>

Kan det overhovedet lade sig gøre at smide login-formen ind i en variable?
Avatar billede amews_aj Nybegynder
15. september 2004 - 21:13 #1
Du kan ikke umiddelbart putte en masse kode ind i en variabel! Du er nødt til som jeg kan se du har gjort i $brugermenu at indsætte \ foran alle " inde midt i koden!

Fx.
$loginmenu="
<table width=\"70\" border=\"0\" cellspacing=\"2\" cellpadding=\"0\">
Avatar billede stalle Nybegynder
15. september 2004 - 21:16 #2
og \ foran alle " kan du klare med addslashes()
Avatar billede elskermad.dk Nybegynder
15. september 2004 - 21:18 #3
jeg ville gøre det således:

<?

if (isset($_SESSION[session-med-brugeroplysning])) { // menuen brugere ser
  echo"
      brugermenuen
  ";
}
else { // menuen folk der ikke er logget ind ser
  echo"
      den almindelige menu
  ";
}

?>

der hvor der er behov for en menu! :)
Avatar billede amews_aj Nybegynder
15. september 2004 - 21:19 #4
ok den kendte jeg ikke, nu ved jeg også det :)

så man kan altså sige

$loginmenu="addslashes(
<table width="70" border="0.....................)";

ER det sådan?
Avatar billede amews_aj Nybegynder
15. september 2004 - 21:20 #5
elskermad.dk >> Ja det var også en god måde du kom med, men han skal vel alligevel have sat \ foran " med addslashes() så han kommer samme sted hen!
Avatar billede amews_aj Nybegynder
15. september 2004 - 21:21 #6
Det eneste han gør er jo at putte dem i en variabel inden han gør det med sessions så resultatet er det samme! :)
Avatar billede elskermad.dk Nybegynder
15. september 2004 - 21:22 #7
hehe ja, men synes det er nemmer end at føre det ind i en variable! ser jeg lidt som dobbelt arbejde...

$loginmenu = addslashes("koden");
Avatar billede amews_aj Nybegynder
15. september 2004 - 21:25 #8
Ja det kan du have ret i :)
Avatar billede amews_aj Nybegynder
15. september 2004 - 21:25 #9
PS. Tak for eksemplet med addslashes ;)
Avatar billede wtd_nielsen Nybegynder
15. september 2004 - 21:26 #10
tak for de hurtige svar, skal lige tjekke den der addslashes ud så.. ;)
Avatar billede wtd_nielsen Nybegynder
15. september 2004 - 21:35 #11
umiddelbart ser du ikke ud til at lykkedes med addslashes, kode:

$loginmenu = addslashes("
<table width="70" border="0" cellspacing="2" cellpadding="0">
<FORM METHOD="POST" ACTION=\"http://login.php\">
<tr>
<td>Brugernavn</td>
</tr>
<tr>
<td><input type="text" name="brugernavn" size="18"></td>
</tr>
<tr>
<td>Adgangskode</td>
</tr>
<tr>
<td><input type="password" name="password" size="18"></td>
</tr>
<tr>
<td align="left" valign="middle"><input type="submit" name="submit" value="login"></td>
</tr>
</FORM>
</table>");

Parse error: syntax error, unexpected T_LNUMBER in login.php on line 15
Errors parsing login.php  ( linie 15 er den med <table width="70" border.....)

måske er elskermad.dks svar det rigtige, men ville være rart man bare lige ku kalde $_SESSION['loginmenu'] = $brugermenu; når loginformen skulle vises :x
flere forslag er velkommen :)
Avatar billede elskermad.dk Nybegynder
15. september 2004 - 21:41 #12
jeg er sgu blevet i tvivl om den måde jeg sætter variablen med addslaches er rigtig... vent lige og se hvad de kloge siger
Avatar billede amews_aj Nybegynder
15. september 2004 - 21:43 #13
Hmm, for at finde hvor det går galt, så prøv at fjerne width border osv. på skift, og se hvilken det er galt med, så må vi jo kigge på det, men så har vi skærpet det lidt ind! :)
Avatar billede amews_aj Nybegynder
15. september 2004 - 21:45 #14
Prøv

$loginmenu = addslashes(
<table width="70" border="0" cellspacing="2" cellpadding="0">
<FORM METHOD="POST" ACTION=\"http://login.php\">
<tr>
<td>Brugernavn</td>
</tr>
<tr>
<td><input type="text" name="brugernavn" size="18"></td>
</tr>
<tr>
<td>Adgangskode</td>
</tr>
<tr>
<td><input type="password" name="password" size="18"></td>
</tr>
<tr>
<td align="left" valign="middle"><input type="submit" name="submit" value="login"></td>
</tr>
</FORM>
</table>);
Avatar billede amews_aj Nybegynder
15. september 2004 - 21:49 #15
hmm, nej selvfølgelig ikke, det bliver det værre af!

Det skal være med ' i stedet for, ellers virker det ikke:

<?

$loginmenu = addslashes("
<table width='70' border='0' cellspacing='2' cellpadding='0'>
<FORM METHOD='POST' ACTION=\'http://login.php\'>
<tr>
<td>Brugernavn</td>
</tr>
<tr>
<td><input type='text' name='brugernavn' size='18'></td>
</tr>
<tr>
<td>Adgangskode</td>
</tr>
<tr>
<td><input type='password' name='password' size='18'></td>
</tr>
<tr>
<td align='left' valign='middle'><input type='submit' name='submit' value='login'></td>
</tr>
</FORM>
</table>");

?>
Avatar billede amews_aj Nybegynder
15. september 2004 - 21:49 #16
PS. Den sidste er testet!
Avatar billede coderdk Praktikant
15. september 2004 - 21:50 #17
"here doc" virker fint:

$loginmenu = <<<STOP_TEKST
<table width="70" border="0" cellspacing="2" cellpadding="0">
<FORM METHOD="POST" ACTION="/login.php">
<tr>
<td>Brugernavn</td>
</tr>
<tr>
<td><input type="text" name="brugernavn" size="18"></td>
</tr>
<tr>
<td>Adgangskode</td>
</tr>
<tr>
<td><input type="password" name="password" size="18"></td>
</tr>
<tr>
<td align="left" valign="middle"><input type="submit" name="submit" value="login"></td>
</tr>
</FORM>
</table>
STOP_TEKST;

echo $loginmenu;
Avatar billede amews_aj Nybegynder
15. september 2004 - 21:53 #18
hehe, så har du to at vælge i mellem, hvad gør <<<STOP_TEKST  ???
Avatar billede wtd_nielsen Nybegynder
15. september 2004 - 22:59 #19
tak for hjælpen alle sammen. PC-helps eksempel virkede og jeg kan nu gå videre indtil det næste problem opstår.
coderdks eksempel virkede på en måde, men efter jeg satte det script ind, da fik jeg nogle parse errors på nogle andre variabler som ellers virkede fint...ved ikke om det bare var selve min kode der var fucked...det kan ikke udelukkes ;)
Avatar billede coderdk Praktikant
16. september 2004 - 01:29 #20
"here doc" er en måde at udskrive/sætte megen tekst:

$variabel = <<<ET_STOP_ORD
her er "teksten' ja"...
ET_STOP_ORD;

Den tager alt fra linien efter "= <<<" og for stopordet. Stopordet SKAL stå på en linie for sig selv, uden mellemrum før (ingen indentering).

Se: http://dk2.php.net/types.string#language.types.string.syntax.heredoc
Avatar billede stalle Nybegynder
16. september 2004 - 06:58 #21
coderdk - Tak :)

Så har også jeg lært noget idag
Avatar billede amews_aj Nybegynder
16. september 2004 - 09:54 #22
Me 2 :)
Avatar billede coderdk Praktikant
16. september 2004 - 10:06 #23
Cool :)
Avatar billede wtd_nielsen Nybegynder
28. september 2004 - 13:50 #24
hmmm hvad nu hvis man gerne vil have noget php i den menu? f.eks.:

$menu2 = <<<STOP_TEKST
<h3>Arrangementer <? echo $add_link;?></h3>
STOP_TEKST;

så opfatter den ikke at den skal hente udskrive en varibale der hedder add_link :s
Avatar billede coderdk Praktikant
28. september 2004 - 13:57 #25
I "here doc" behøver du ikke gøre noget for at skrive php-variable ud:

$menu2 = <<<STOP_TEKST
<h3>Arrangementer $add_link</h3>
STOP_TEKST;

Ellers ved jeg ikke lige hvad du mener ;)
Avatar billede wtd_nielsen Nybegynder
28. september 2004 - 14:13 #26
det er fordi jeg har en menu, som jeg meget gerne vil have over i en php fil så jeg bare kan kalde menuen på de forskellige sider, istedet for at koden skal stå på alle sider. Som den ser ud nu (forkortet ned):
menu=
<h3>Arrangementer <? echo $add_link;?></h3>
<h4 class="month">September</h4>
<span class="arrangementer"><?echo @mysql_result($arr2, 0); ?> <a title= "<? echo "Tid:"; echo @mysql_result($arr3, 0); echo " Info: "; echo @mysql_result($arr4, 0); ?> "><?echo @mysql_result($arr1, 0); ?></a></span><br /></td></tr>

hvis jeg så bruger <<<STOP_TEKST så udskriver den bare @mysql_result($arr2, 0); og ikke selve værdien
Avatar billede coderdk Praktikant
28. september 2004 - 14:24 #27
$r1 = mysql_fetch_array( $arr1 );
$r2 = mysql_fetch_array( $arr2 );
$r3 = mysql_fetch_array( $arr3 );
$r4 = mysql_fetch_array( $arr4 );
$menu = <<<STOP
<h3>Arrangementer $add_link</h3>
<h4 class="month">September</h4>
<span class="arrangementer">$r2 <a title="Tid: $r3 Info: $r4">$r1</a></span><br /></td></tr>
STOP;


eller


$menu=<<<STOP
<h3>Arrangementer {$add_link}</h3>
<h4 class="month">September</h4>
<span class="arrangementer">{mysql_result($arr2, 0)} <a title= "Tid: {mysql_result($arr3, 0)} Info: {@mysql_result($arr4, 0)}">{mysql_result($arr1, 0)}</a></span><br /></td></tr>
STOP;

er dog ikke sikker på at det sidste virker :P
Avatar billede wtd_nielsen Nybegynder
28. september 2004 - 15:02 #28
hej coderdk, tak for hjælpen igen igen, eksempel 1 virker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester