2013-06-11 37 views
0

我完全不熟悉PHP。所以这个代码可能完全没有意义。但是,我想要求帮助。如果有人能告诉我什么是错的,或者只是写出正确的代码。这段代码有什么问题?我如何纠正它?

基本上我尝试做的代码是检查用户是否登录,如果没有,然后显示他登录和注册链接。

如果他已登录,然后向他显示他的用户名。

这里是PHP代码:

<?php 

    require("common.php"); 

    if(empty($_SESSION['user'])) 
    { 
     echo("<a href="login.html"><b>Login</b></a>"); 
     echo("<a>or<a>"); 
     echo("<a href="register.html"><b>Register</b></a>"); 
    } 

    else 
    { 
     echo 'Username: ' . $current_user->user_login . "\n"; 
    } 
?> 

代码从HTML:(代码,我用它来包括这个代码不知道它的也...)

<header action="php/check.php" method="post"> 

感谢答案仍然不工作寿:( 这里是当前的代码,我编辑了你们如何提供建议。

<?php 
    session_start() 

    require("common.php"); 

    if(empty($_SESSION['user'])) 
    { 
     echo '<a href="login.html"><b>Login</b></a>'; 
     echo '<a>or<a>'; 
     echo '<a href="register.html"><b>Register</b></a>'; 
    } 

    else 
    { 
     echo 'Username: ' . $current_user->username . "\n"; 
    } 
?> 
+3

你的'session_start()'在哪里? – Blender

+0

所以你的问题是什么? – waldol1

+2

echo不需要括号 – Orangepill

回答

2

您确定会话正在自动启动吗? 否则您需要添加:

编辑:也删除周围回声的parentethis,它内置的语言,它不是一个函数。并且避免引号。

<?php 
    session_start() 

    require("common.php"); 

    if(empty($_SESSION['user'])) 
    { 
     echo "<a href=\"login.html\"><b>Login</b></a>"; 
     echo "<a>or<a>"; 
     echo "<a href=\"register.html\"><b>Register</b></a>"; 
    } 

    else 
    { 
     echo 'Username: ' . $current_user->user_login . "\n"; 
    } 
?> 

您还可以添加一个php.ini并使用会话auto_start。

http://www.php.net/manual/en/session.configuration.php#ini.session.auto-start

+1

回声部分会抛出一个语法错误,介意你 –

+0

哦,是啊,没有足够的重视......编辑。 – Maresh

0

试试这个:

if(empty($_SESSION['user'])) 
{ 
    echo '<a href="login.html"><b>Login</b></a>'; 
    echo ' or '; 
    echo '<a href="register.html"><b>Register</b></a>'; 
} 
+0

感谢大家的支持。仍不能正常使用寿:( 目前看起来像这样 <?PHP \t在session_start() \t要求(“通用。PHP“); 如果(空($ _ SESSION [ '用户'])) { \t \t回波 'Login '; \t \t回声' '; \t \t回波' Register'; \t} \t \t其他 \t { \t \t回声 '用户名:' $ current_user->用户名 “\ n”; \t。 } ?> – user2475515

+0

但是你是否在设置$ _SESSION时调用session_start()? –

+0

是的。 Common.php在其结尾处有session_start()。 我也尝试过用手写书写session_start()。 – user2475515

0

首先,你需要逃避所有的逃生语句的双引号,因为这:

echo "<a href=\"login.html\"><b>Login</b></a>"; 
echo "<a>or<a>"; 
echo "<a href=\"register.html\"><b>Register</b></a>"; 

你不需要括号为echo

其次,为了使用$_SESSION变量,您需要先使用函数session_start()开始会话。

+0

我做到了。还是行不通。我想知道我是否需要一些PHP文件的HTML。或PHP到HTML? 所以目前我的HTML文件有: <标题行动=“PHP/check.php”方法=“邮报”> 所以我试着去打印PHP文件答案头...... 此时它赢得不要在任何地方打印。 – user2475515

+0

你是否正确地给出文件路径? 'action =“php/check.php”'是相对于当前位置的。在它之前使用'/'。它像'action =“/ php/check.php”'一样。如果它不起作用,请看看这个来获取根的位置:http://stackoverflow.com/questions/17036192/when-new-page-is-created-the-css-is-not-taken-进入帐户/ 17036267#17036267 – Kevin

+1

@ user2475515我从来没见过'

''之前。 '
'yes,but * header *? –