php smarty действительно нужна помощь - PullRequest
0 голосов
/ 21 мая 2011

Эй, ребята, я понятия не имею, почему это не сработает ... Кажется, он не хочет получать значения 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>&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>

Это просто поле, которое я встраиваю в свой индексный шаблон.

  <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 месяца или около того.

1 Ответ

0 голосов
/ 21 мая 2011

Судя по тому, что вы опубликовали, вы мешаете запуску вашего сеанса должным образом, отображая отладочную информацию:

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.

ps Учитывая, что вы новичок, обратите внимание, что ваша функция processlogin подвержена атакам SQL-инъекций.

...