2017-06-22 132 views
0

我想使用file_put_contents()来创建用户特定的页面。当用户首次进入他们的帐户时,我希望网站创建一个只能由mydomain.com/users/username.php用户访问的页面。如果他们不是用户,那么我试图将他们重定向到他们自己的帐户页面(因为users/username.html包含敏感信息)。因此,我在username.html中使用此代码:PHP变量错误/ file_put_contents错误

<?php 
$actual_link='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; 
$net = $actual_link['filename']; 
if($_SESSION['username']==$net){ 
echo 'Verified'; 
} 
else{ 
header('Location:mydomain.com/user/welcome.php'); 
} 
?> 

这假设性地将未授权用户关闭页面。要为每个用户创建的页面(并保持其可扩展的),我用

file_put_contents($urlphp,$phpstuff) 

(我决定不使用FILE_APPEND因为该文件不应该存在)。 $ urlphp是与.php结合的用户名($ _SESSION ['username']),$ phpstuff是我上面提到的全部内容。这是我认为我出错的地方。我打字:

$phpstuff = "<?php 
$actual_link='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; 
$net = $actual_link['filename']; 
if($_SESSION['username']==$net){ 
echo 'Verified'; 
} 
else{ 
header('Location:mydomain.com/user/welcome.php'); 
} 
?>" 

然而,产生这样的代码:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in path/to/users/welcome.php on line 35 

第35行是:

$actual_link='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; 

然而,(并牢记在这里,我是比较新的PHP/MySQL的,所以我走了我所知道的和PHP.net和W3Schools告诉我)我无法找到任何空格在第35行。所以我认为你不能有一个多行变量(这不会对代码有害,我想....),所以我试着用maki所有这一行,这产生了完全相同的错误,但移动问题线。

我无法弄清楚的是,如果这是我使用file_put_contents()或使用变量$ phpstuff时出现的问题。如果有什么我错过了,请指出,我几乎积极,这是我俯瞰的东西。我无法做什么/尝试。所有的帮助表示赞赏。谢谢!

+0

这个问题与mysql有什么关系?有没有代码来支持它,你想在'$ phpstuff =“”'中做什么? –

+1

*“因此,我在'username.html'中使用了这些代码”* - 您是否指示服务器将其视为php? *“我用 'file_put_contents($ urlphp,$ phpstuff)'”* - 我没有看到那些在任何地方定义的变量。你的问题的方式太不明了。 –

+0

我只能提供评论;看到给出的答案。 –

回答

2

不要这样做。

除了动态生成PHP并为每个单独的用户创建一个文件(这在许多方面都是错误的),还有一个文件处理所有用户,然后将用户名/用户ID作为参数传递给脚本。

您可以使用.htaccess将/ users/.php的所有请求路由到/users/index.php?user=

+0

谢谢你的回答。我将如何使用.htaccess来做到这一点?或者你有任何解释链接? – user54345349

+0

以下是.htaccess的一个很好的“备忘单”:http://htaccesscheatsheet.com/ – Enstage

+0

非常感谢!不过,我对PHP/.htaccess比较陌生。该网站的哪一部分应该用于我的需求? – user54345349