пустые переменные $ _POST

1

Я знаю, что у большинства людей была эта проблема, и многие спрашивали об этом, но никакое решение, похоже, не работает для меня. Я попытался увеличить post_max_size и т.д. В php.ini, я нашел ссылку на решение, которая должна была удалить эту строку RewriteRule ^(.*)$ http://www.whitemagicsoftware.com/$1 [R=301,L] из .htaccess но я не могу найти файл .htaccess в моей папке xampp где угодно. Я ищу решение в течение почти двух дней, пытался изменить код, но ничего не работало для меня. Я также пытался использовать $_GET и $_REQUEST но результат такой же. Я вижу, как значения переменных отправляются с использованием firebug но мои переменные пусты. Любая помощь будет оценена по достоинству.
Это мой код

<?php require ("database_connect.php");?>
<!DOCTYPE html>
<html>
<body>  
    <form method="POST" action="<?php echo ($_SERVER["PHP_SELF"])?>">
    Name : <input type="text" name="name"><br/>
    Password : <input type="password" name="password"><br/>
    <input type="submit" name="login" value="Log In">   
    </form>

    <?php
    //$name=$password="" ;
        if($_SERVER["REQUEST_METHOD"]=="POST" and isset($_POST["login"])){

            $name = testInput($_POST['name']);
            $password = testInput($_POST['password']);
            echo $name."<br>";
        }//if ends here

        //testInput function
        function testInput($data){
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);
        }//testInput ends here


        if(isset($_POST["login"]) && isset($_POST["name"]) && isset($_POST["password"]) && !empty($_POST["name"]) && !empty($_POST["password"])){
        echo "Name is ".$name ."- Pass is ".$password."<br>";
        if($result = mysqli_query($conn,"SELECT * FROM users" )){           

            //print "rows are ".$result->num_rows."<br>";//number of rows

            if($result && mysqli_affected_rows($conn) >= 1){//If query was successfull and it has 1 or more than 1 result
            //echo "you are logged in<br>";
                ($row = mysqli_fetch_row($result));

                echo "$row[0] is ".$row[0]."- $row[1] is ".$row[1]."<br>";
                if( $row[0]==$name && $row[1]==$password){
                    echo "Welcome";
                } 
            }//if ends here


            /* free result set */
            $result->close();
        }       
        else {
            print "Wrong Credentials "."<br>";
            die(mysqli_error($conn));
        }
        }

        //close connection
        $conn->close();
    ?>
</body>
</html>
  • 1
    Добавьте сообщение об ошибке в начало файла (ов) сразу после открытия <?php tag error_reporting(E_ALL); ini_set('display_errors', 1);
  • 1
    сделал какую-либо базовую отладку, такую как var_dump($_POST) ?
Показать ещё 7 комментариев
Теги:
.htaccess
mod-rewrite

3 ответа

0
Лучший ответ

Моя проблема решена, возникла проблема в моей функции testInput ($ data). Это обновленный код, который работает плюс простой совет для будущих пользователей, всегда внимательно просматривайте свой код, вы найдете проблему :)

<?php require ("database_connect.php");
error_reporting(E_ALL); ini_set('display_errors', 1);

?>
<!DOCTYPE html>
<html>
<body>  
    <form method="POST" action="<?php echo ($_SERVER["PHP_SELF"])?>">
    Name : <input type="text" name="name"><br/>
    Password : <input type="password" name="password"><br/>
    <input type="submit" name="login" value="Log In">   
    </form>

    <?php
    //$name=$password="" ;
        if($_SERVER["REQUEST_METHOD"]=="POST" and isset($_POST["login"])){

            $name = testInput($_POST["name"]);
            $password = testInput($_POST["password"]);

        }//if ends here

        //testInput function
        function testInput($data){
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);

            return $data;
        }//testInput ends here


        if(isset($_POST["login"]) && isset($_POST["name"]) && isset($_POST["password"]) && !empty($_POST["name"]) && !empty($_POST["password"])){

        if($result = mysqli_query($conn,"SELECT * FROM users WHERE name='$name' and password='$password'" )){

            if($result && mysqli_num_rows($result) >= 1){//If query was successfull and it has 1 or more than 1 result

            echo "Welcome <br>";

            }//if ends here
            else {
            echo "Wrong Credentials <br>";
        }

            /* free result set */
            $result->close();
        }       
        else {
            echo "Wrong Credentials <br>";
            die(mysqli_error($conn));
        }
        }

        //close connection
        $conn->close();
    ?>
</body>
</html>
0

Я предполагаю, что htmlspecialchars() должен быть запущен до stripslashes() или просто удалить htmlspecialchars() в файле. :)

    function testInput($data){
        $data = trim($data);
        $data = stripslashes($data);

        return $data;
    }
0

попытайтесь изменить,

<form method="POST" action="<?php echo ($_SERVER["PHP_SELF"])?>">

to 

<form method="POST" action="">
  • 0
    спасибо но это не было проблемой :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню