如何在登录时自动识别用户,从db中检索他的数据?

时间:2012-06-14 07:20:16

标签: php

<?php
error_reporting(0); 
session_start(); 
if( $_SESSION["logging"]&& $_SESSION["logged"])
{
 print_secure_content();
}
else {
if(!$_SESSION["logging"])
{  
$_SESSION["logging"]=true;
loginform();
}
   else if($_SESSION["logging"])
   {
     $number_of_rows=checkpass();
     if($number_of_rows==1)
        {   
         $_SESSION[user]=$_GET[userlogin];
         $_SESSION[logged]=true;
         $_SESSION[user_id]=$row['id'];
         print"<h1>You have loged in successfully</h1>";
         print_secure_content();
        }
        else{
            print "Wrong password or username, please try again.".'<br/>';  
            loginform();
        }
    }
 }

function loginform()
{
print "Please enter your login information to proceed with our site.".'<br/>'.'<br/>';
print ("<table border='2'><tr><td>Username</td><td><input type='text' name='userlogin'     size'20'></td></tr><tr><td>Password</td><td><input type='password' name='password'       size'20'></td></tr></table>").'<br/>';
print "<input type='submit' >"; 
print "<h3><a href='registerform.php'>Register now!</a></h3>";  
print "<br><a href='admin.php'>Admin login</a><br>";
}

function checkpass()
{
$servername="localhost";
$username="root";
$conn=  mysql_connect($servername,$username)or die(mysql_error());
mysql_select_db("kviz",$conn);
$sql="select * from korisnici where name='$_GET[userlogin]' and       password='$_GET[password]'";
$result=mysql_query($sql,$conn) or die(mysql_error());
return  mysql_num_rows($result);
}

function print_secure_content()
{
print("<b><h1>Hi mr.$_SESSION[user]</h1>");
 print "<br><h2>Only a logged in user can see this</h2><br><a href='index.htm'>Počni       kviz</a><br><br><a href='logout.php'>Logout</a><br>";    

}
?>

这是我将数据插入db

的地方
    $sql = "INSERT INTO tacni (id_tacnog, id_pitanja, id_korisnik,stanje) VALUES ('', '".$row['odg_id']."','$id_korisnika','tačan')";
////$id_korisnika means id_user

这是我从db

中检索的地方
    $result = mysql_query("SELECT pitanja.*,tacni.*,korisnici.*
FROM pitanja
INNER JOIN tacni ON pitanja.id = tacni.id_pitanja
INNER JOIN korisnici ON pitanja.id = korisnici.id
 WHERE korisnici.id = '$id_korisnika'");

我需要识别哪个用户已登录,他的答案必须插入到具有id字段的表korisnici(用户)中。我尝试过这样但没有任何反应,没有插入任何行。任何人都可以帮助我出来,给我写几行代码,这将使这项工作,我将非常感谢任何帮助?

2 个答案:

答案 0 :(得分:2)

  1. 请使用HTTP / POST而非HTTP / GET在凭证上发布。

  2. 您的脚本使用的是mysql_ *函数,您使用它的方式向SQL Injection开放。改为使用MySQL的prepared statement

  3. 尝试使用$_SESSION["user"]代替$_SESSION[user]。在我看来,这将解决你的问题。无论您想知道要处理的是哪个用户,请使用$_SESSION["user"]进行识别。

答案 1 :(得分:0)

您应该考虑将Cookie用于此目的。