Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php smarty确实需要帮助_Php_Sql_Session_Smarty - Fatal编程技术网

php smarty确实需要帮助

php smarty确实需要帮助,php,sql,session,smarty,Php,Sql,Session,Smarty,嘿,伙计们,我不知道为什么这行不通……它似乎不想获取帖子的价值观……我搞不懂 这是loginbox <div class="loginbox"> <form action="processlogin.php" method="post"> <table width="100%" border="0" cellspacing="0" cellpadding="5"> <tr> <td>Us

嘿,伙计们,我不知道为什么这行不通……它似乎不想获取帖子的价值观……我搞不懂

这是loginbox

<div class="loginbox">
<form action="processlogin.php" method="post">

    <table width="100%" border="0" cellspacing="0" cellpadding="5">
        <tr>
            <td>Username</td>
            <td><input type="text" name="UserName" /></td>
        </tr>
        <tr>
            <td>Password</td>
            <td><input type="text" name="Password" /></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td><input type="submit" value="Login" /></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td><span style="font-size:12px;"><a href="adduser.php">Click here to register</a></span></td>
        </tr>
    </table>
</form>
这是函数…你会看到我只是随机测试,没有真正意义。我只是想让它显示出一路上的事情,这样我就可以找出哪里出了问题


对不起,我的编码技术很差。我现在只学了2个月左右。

从您发布的内容来看,您正在通过回显调试信息来阻止会话正常启动:

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    // Get any error message
    $error = @$_GET['error'];
} else {

    $UserName = @$_POST['UserName'];
    $Password = @$_POST['Password'];
    echo $UserName;
}
processlogin($UserName, $Password);
对session_start的调用在processlogin函数中,该函数在您已经将内容输出到浏览器之后出现。这是PHP maunal所说的:

要使用基于cookie的会话, 必须在之前调用会话\u start 将任何内容输出到浏览器

尝试删除行echo$UserName


p、 鉴于您是一名初学者,请注意您的processlogin函数容易受到SQL注入攻击。

实际上,有关SQL注入攻击的部分是错误的-抱歉!它仍然不起作用。我认为从表单中获取变量存在一些问题。因为即使在进程登录运行之前,它也应该显示用户名的回显…我删除了错误检查,回显仍然不起作用。出现的是tradde,这是我表示loggedin==false的方式。我修复了它…但我不知道如何…它刚刚开始工作…我什么都没做,突然它工作了。
<?php
include '/usr/local/Smarty/libs/Smarty.class.php';
require "includes/defs.php";
$smarty = new Smarty;

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    // Get any error message
    $error = @$_GET['error'];
    } else 
    {

        $UserName = @$_POST['UserName'];
        $Password = @$_POST['Password'];
        echo $UserName;
    }
processlogin($UserName, $Password);

?>
    function processlogin($UserName, $Password){
    echo $UserName;
session_start();
$UserName = mysql_escape_string($UserName);
$Password = md5($Password);
echo $UserName;

    $connection = mysql_open();
    $SQL = "SELECT * FROM tblUsers WHERE UserName = '$UserName' AND UserPass = '$Password'";

    $Result = @ mysql_query($SQL)
     or showerror();

    if(mysql_num_rows($Result) > 0)
    {
        $DATA = mysql_fetch_assoc($Result);
        $_SESSION['userID'] = $DATA['ID'];
        $_SESSION['Loggedin'] = "true"; 
        echo 'true';
        //header("Location:index.php");
    }
    else
    {
        $_SESSION['Loggedin'] = "false";
        echo 'trdddde';
        //header("Location:index.php");
    }

}
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    // Get any error message
    $error = @$_GET['error'];
} else {

    $UserName = @$_POST['UserName'];
    $Password = @$_POST['Password'];
    echo $UserName;
}
processlogin($UserName, $Password);