2013-03-13 4 views
0

Je suis nouveau sur php. Voici un code pour vérifier si l'utilisateur est connecté en utilisant la session, puis en autorisant l'utilisateur.afficher le lien hypertexte dans php

VALIDATION

<?php 

session_start(); 

$uname = $_POST['uname']; 
$pass = $_POST['pass']; 

if($uname == "admin" && $pass == "admin") 
{ 
    $_SESSION['uname'] = $uname; 
    $_SESSION['auth'] = 1; 
    echo "Welcome Mr ".$uname.". You are now logged in "; 
    echo "<br>"; 
    echo "<a href='TakeMeHome.html'>Click here to access the application </a>"; 
} 
else 
{ 
    echo "Invalid username or password"; 
} 

?> 

page

<?php 

session_start(); 


if($_SESSION['auth'] != 1) 
{ 
    echo "You are not logged in! "; 
    echo "<a href = \"TakeMeHome.html\">"; 
    echo "Access Application"; 
    echo "</a>"; 
    exit(); 
} 

?> 

<html> 
You are now logged in 
</html> 

Mais la balise link affiche

"; echo "Access Application"; echo ""; exit(); } ?> 

ainsi que les données html. Aucune vérification n'est effectuée. Je sais qu'il existe de nombreuses façons de valider l'utilisateur est connecté ou non. Mais je suis en train d'apprendre des sessions et donc j'utilise des sessions. Pouvez-vous s'il vous plaît me dire où je vais mal?
ce qui concerne.

+0

J'ai pris l'habitude d'utiliser des guillemets simples pour les échos et les guillemets pour le HTML qui s'y trouve. Cela fonctionnera dans ce cas aussi. Je devine en mettant un extra "après le \" le corrigera néanmoins ... – CaptainCarl

+2

Votre HTML n'est pas valide. Habituellement tout le HTML réside entre '' et '' ... – Simone

+0

@simone. Je ne comprends pas. Quel html? Dans le dernier ou dans le lien ? – user1263375

Répondre

1

utilisation de guillemets simples dans vos codes d'écho comme ceci:

<html> 
    <head> 
    </head> 
    <body> 
    <?php 
     echo "<a href='pageToGoTo.html' title='Page to go to' class='whatEver'>Anchor text</a>"; 
    ?> 
    </body> 
</html> 

Ce qui est dit déjà, html doit être mis dans le corps ...

+0

Mais je veux obtenir les détails de la session. Et selon W3schools, "Note: La fonction session_start() doit apparaître AVANT le tag " – user1263375

0

Je ne sais pas pourquoi @Andy vous a suggéré mettez votre PHP dans vos balises de tête - ce n'est pas javascript. Vous avez 2 façons dont vous pouvez formater votre PHP et HTML, le premier est de mettre tout votre PHP au-dessus de votre balise html d'ouverture, comme si

<?php 
    session_start(); 
    if($_SESSION['auth'] != 1) { 
     $message = 'You are not logged in! <a href="TakeMeHome.html">Access Application</a>'; 
    } else { 
     $message = 'You are logged in!'; 
    } 
?> 
<html> 
    <head>  
    </head> 
    <body> 
    <?php echo $message; ?> 
    </body> 
</html> 

Ou, placez-le dans le corps de votre page, comme ceci:

<?php 
    session_start(); 
?> 
<html> 
    <head>  
    </head> 
    <body> 
    <?php 
     if($_SESSION['auth'] != 1) { 
     echo 'You are not logged in! <a href="TakeMeHome.html">Access Application</a>'; 
     } else { 
     echo 'You are logged in!'; 
     } 
    ?> 
    </body> 
</html> 

Si vous n'êtes toujours pas obtenir les résultats souhaités, puis utilisez var_dump($_SESSION); pour imprimer votre tableau de session et assurez-vous qu'il contient les informations correctes.