嘿伙计我不知道为什么这不会工作......它似乎不想拿起POST值....我无法弄明白
这是登录框
<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> </td>
<td><input type="submit" value="Login" /></td>
</tr>
<tr>
<td> </td>
<td><span style="font-size:12px;"><a href="adduser.php">Click here to register</a></span></td>
</tr>
</table>
</form>
这只是我嵌入到索引模板中的一个框。
<div class="header">
{if loggedin == false}
<h1>welcome</h1>
{else}
{include file="loginbox.tpl"}
{/if}
</div>
登录时提交到processlogin.php,这是
<?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);
?>
这会调用函数processlogin ...但是在此之前我正在测试我是否能获得UserName而我不能......
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");
}
}
这是函数......你会看到我只是随机测试,其中没有任何意义。我只是想让它在整个过程中展示一些东西,这样我才能弄清楚出了什么问题
抱歉我的编码技巧很差。我现在只学习了2个月左右。
答案 0 :(得分:0)
根据您发布的内容,您可以通过回显调试信息来阻止会话正常启动:
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的会话, 之前必须调用session_start() 向浏览器输出任何内容。
尝试删除行echo $UserName;
HTH。
P.S。看你是初学者,请注意你的processlogin
函数容易受到SQL注入攻击。