开发者

php smarty really need help

开发者 https://www.devze.com 2023-03-07 23:37 出处:网络
Hey guys I have no idea why this wont work...It doesn\'t seem to want to pick up the POST values....I can\'t figure it out

Hey guys I have no idea why this wont work...It doesn't seem to want to pick up the POST values....I can't figure it out

This is 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>

This is just a box I embed into my index template.

  <div class="header">
    {if loggedin == false}
        <h1>welcome</h1>
    {else}
        {include file="loginbox.tpl"}
    {/if}
  </div>

Loginbox when submited goes to processlogin.php which is this

<?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);

?>

This calls the function processlogin...but even before that I was testing to see if I could even get UserName and I can't...

    function processlogin($UserName, $Password){
    echo $UserName;
session_start();
$UserName = mysq开发者_StackOverflow社区l_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");
    }

}

This is the function...you will see I just have random tests in which make no real sense. I am just trying to make it show things along the way so I can figure out what's going wrong

Sorry for my poor coding skills. I've only been learning for 2 or so months now.


By the looks of what you've posted, you're stopping your session from being started properly by echoing debug info:

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

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

The call to session_start is in the processlogin function, which comes after you've already output content to the browser. This is what the PHP maunal says:

To use cookie-based sessions, session_start() must be called before outputing anything to the browser.

Try removing the line echo $UserName;

HTH.

p.s. Seeing as you're a beginner, note that your processlogin function is susceptible to SQL Injection attacks.

0

精彩评论

暂无评论...
验证码 换一张
取 消