2016-11-24 57 views
0

所以我使用函数来检查帐户是否存在。除了在名称已被占用时打印用户名之外,它工作得很好。数据库的功能按预期运行。返回错误信息中的$username只是一个奇怪的问题。PHP:为什么我的变量不通过,但在相同的范围内?

Demo Page

试用用户药水,它会显示不可用,但指出$username,而不是药水在那里为狼在这种情况下是可用的。

if (isset($_POST['submit'])) { 
    if (empty($_POST['username'])) { 
     $error = "Username cannot be empty."; 
    } 
    elseif (preg_match('/[\'^£$%&*()}{@#~?><>,|=+¬-]/', $_POST['username'])) 
    { 
     $error = "Username must contain up to 12 characters of A-z letters 0-9 numbers and _."; 
    } 
    else 
    { 
     //set the username variable 
     $username = $_POST['username']; 

     //$username = preg_replace("/[^A-Za-z0-9_]/", "", $username); 

     //$username=preg_replace('/[^0-9a-zA-Z_]/',"",$input) 

     //check the runescape website if it exists 
     $likelyhood = checkUsername($username); 

     //if already exist, update my database 
     if($likelyhood === 28){ 
      $error = "Congratulations, the username $username appears to be availible!"; 
      addNewUserToDb($username, 1); 
     //if availible, update my database 
     } 
     if($likelyhood < 28){ 
      $error = 'Sorry, the username $username is already taken.'; 
      addNewUserToDb($username, 0); 
     } 
    } 
} 
+3

变量不作为值传递的,但在单引号实际字符串。要么做''...用户名'。$ username''。已经...'或者使用双引号而不是'''(它会传递变量的值)。 – Qirel

+0

请参阅[关于字符串的PHP文档](http://php.net/manual/en/language.types .string.php#language.types.string.syntax.single) – Qirel

+0

Omg。我在一个简单的事情上熬夜强调...... !!!! – Potion

回答

0

如果您希望变量由PHP来解释,你需要把字符串中的双引号:

$error = "Sorry, the username $username is already taken."; 
0

要串插变量,你应该使用双引号:

$error = "Sorry, the username $username is already taken."; 

这就是说PHP doc

注意:与双引号和heredoc语法不同,特殊字符的变量和转义序列在单引号字符串中出现时不会展开。

单引号,你需要连接字符串:

$error = 'Sorry, the username '.$username.' is already taken.'; 
相关问题