2014-02-20 57 views
1

所以我试图在用户登录时测试添加点数,但我一直无法弄清楚。它正在正确地登录用户,但不会添加点或“级别”。任何帮助将不胜感激,我感谢您抽出宝贵时间来帮助当用户登录时添加点

<?php 

error_reporting(E_ALL); 

require_once 'core/init.php'; 

if(Input::exists()) { 
    if(Token::check(Input::get('token'))) { 

     $validate = new Validate(); 
     $validation = $validate->check($_POST, array(
      'username' => array('required' => true), 
      'password' => array('required' => true) 
     )); 

     if($validation->passed()) { 
      $user = new User(); 

      $remember = (Input::get('remember') === 'on') ? true : false; 
      $login = $user->login(Input::get('username'), Input::get('password'), $remember); 

     if($login) { 
      $query = "UPDATE `users` SET rank = rank + 5 WHERE `username` = 'username'"; 
     } else { 
      echo '<p> Sorry, logging in failed. </p>'; 
     } 

     } else { 
      foreach($validation->errors() as $error) { 
      } 
     } 

    } 
} 
?> 

编辑:我添加了这行,但由于某种原因,它没有连接到数据库,我也把在实际的信息很明显,不用户名,密码等。

if ($login) { 
$dbc = mysqli_connect('localhost', 'username', 'password', 'db name') 
or die('Error Connecting to Database on the SQL Server'); 
$res = mysqli_query($dbc, $query); 
$user_username = mysql_real_escape_string($_POST['username']); 
$query = "UPDATE `users` SET rank = rank + 5 WHERE `username` = '$user_username'"; 
+0

请让我知道我的答案是否适合您,或者您是否对答案有任何疑问。请接受我的答复作为正确的答案,如果它对您有用 - 以便其他用户可以从中受益:知道答案有效并将问题标记为已答复。 – DhruvJoshi

+0

和+1对你的队友! – DhruvJoshi

回答

1

尝试更新该行:

$query = "UPDATE `users` SET rank = rank + 5 WHERE `username` = 'username'"; 

$user_username = mysql_real_escape_string($_POST['username']); 
    $query = "UPDATE `users` SET rank = rank + 5 WHERE `username` = ".$user_username.";" 

这需要做的,你不能简单地在一个字符串“用户名”通过。 PHP需要通过一个变量来知道这个值。

而且还连接到SQL更新像

// use your credentials here instead of localhost, root, '' 
$dbc = mysqli_connect('localhost', 'root', '', 'login') 
     or die('Error Connecting to Database on the SQL Server'); 
$res = mysqli_query($dbc, $query); 
+1

更重要的是,查询没有被发送到数据库。 – degenerate

+0

@degenerate新增至回答。谢谢你指出。 +1给你! – DhruvJoshi

+0

@DhruvJoshi所以我得到这个错误警告:mysqli_connect():(28000/1045):拒绝用户'root'@'localhost'(使用密码:NO)在/home/adamadamadam01/public_html/login.php上第23行 错误连接到SQL Server上的数据库 – user3291224

-1

想要通过您的username在这一行。

$query = "UPDATE `users` SET rank = rank + 5 WHERE `username` = 'username'"; 

其校正成

$username = "abc"; // assign value of you logged in user's username `abc` is the example 
then user it as below. 

    $query = "UPDATE `users` SET rank = rank + 5 WHERE `username` = '$username'"; 

你只是传递一个字符串username。你应该传递一个包含你的用户名的变量。

并在您的页面中运行查询。你定义的查询没有执行它。

+0

没有定义$ username变量? – DhruvJoshi

+0

是的,这就是为什么我给我的回答下面的评论 –

1

我想你好想查询执行:

if($login) { 
     $query = mysqli_query($con,"UPDATE `users` SET rank = rank + 5 WHERE `username` = 'username'"); 
    } 
0

请尝试用这个来代替,将解决问题。

<?php 

error_reporting(E_ALL); 

require_once 'core/init.php'; 

if(Input::exists()) { 
    if(Token::check(Input::get('token'))) { 

     $validate = new Validate(); 
     $validation = $validate->check($_POST, array(
      'username' => array('required' => true), 
      'password' => array('required' => true) 
     )); 

     if($validation->passed()) { 
      $user = new User(); 

      $remember = (Input::get('remember') === 'on') ? true : false; 
      $login = $user->login(Input::get('username'), Input::get('password'), $remember); 

      $username = $user->login(Input::get('username')); // Get username of logged in user 

     if($login) { 
      $query = "UPDATE users SET rank = rank+5 WHERE username = '".$username."'"; 
      mysql_query($query); // change if you using mysqli 
     } else { 
      echo '<p> Sorry, logging in failed. </p>'; 
     } 

     } else { 
      foreach($validation->errors() as $error) { 
      } 
     } 

    } 
} 
?>