只有当你点击复选框时,表单才能工作 [英] Form only working when you hit the checkbox

查看:67
本文介绍了只有当你点击复选框时,表单才能工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在制作一份表格,希望在复选框勾选或检查时能够提交表格。我没有收到任何其他错误,当我登录时没有检查这个盒子。

/sites/2a/d/dbcf5d6440/public_html/MySQL/Challenges/Secretdiary.php on line 91


这是我的代码!

 <?php 

session_start();

$ error =;

if(array_key_exists(logout,$ _GET)){

unset($ _ SESSION);
setcookie(id,,time() - 60 * 60);
$ _COOKIE [id] =;

其他if(array_key_exists(id,$ _SESSION)or array_key_exists(id,$ _COOKIE)){

header(Location:loggedinpage.php ); (XXX,XXX,XXX,XXX ,XXX);

if(mysqli_connect_error()){

die(数据库连接错误);
}



if(!$ _ POST ['email']){

$ error。=电子邮件地址是所需<峰; br>中;
}

if(!$ _ POST ['password']){

$ error。=需要密码< br>;


if($ error!=){

$ error =< p>您的表单中存在错误< p>中$错误。
$ b} else {

if($ _ POST ['signUp'] =='1'){

$ query =SELECT id FROM 'users` WHERE email ='.mysqli_real_escape_string($ link,$ _POST ['email'])。'LIMIT 1;
$ result = mysqli_query($ link,$ query);
if(mysqli_num_rows($ result)> 0){

$ error =该电子邮件地址已拍摄。
$ b} else {

$ query =INSERT INTO`users`(`email`,`password`)VALUES('。mysqli_real_escape_string($ link,$ _POST [ 'email'])。','.mysqli_real_escape_string($ link,$ _POST ['password'])。');

if(!mysqli_query($ link,$ query)){

$ error =< p>无法注册您,请重试< / p> ;
$ b} else {

$ query =UPDATE`users` SET password ='.md5(md5(mysqli_insert_id($ link))。$ _ POST ['password' ])。 'WHERE id =.mysqli_insert_id($ link)。LIMIT 1;

mysqli_query($ link,$ query);
$ _SESSION ['id'] = mysqli_insert_id($ link);
if($ _POST ['stayLoggedIn'] =='1'){

setcookie(id,mysqli_insert_id($ link),time()+ 60 * 60 * 24 * 365);
}


} header(Location:loggedinpage.php);





} else {

$ query =SELECT * FROM`users` WHERE email =' .mysqli_real_escape_string($ link,$ _POST ['email'])。';

$ result = mysqli_query($ link,$ query);
$ row = mysqli_fetch_array($ result);
if(array_key_exists(id,$ row)){

$ hashedPassword = md5(md5($ row ['id'])。_ _ POST ['password']);
if($ hashedPassword == $ row ['password']){

$ _SESSION ['id'] = $ row ['id'];
if($ _POST ['stayLoggedIn'] =='1'){

setcookie(id,$ row($ link),time()+ 60 * 60 * 24 * 365);
}
}
}

}


}

}



?>




< div id =error><?php echo $ error; ?>< / DIV>
< form method =post>
< input type =emailname =emailplaceholder =Your Email Eg。JoBloggs@me.co.uk>
< input type =passwordname =passwordplaceholder =Password>
< input type =checkboxname =stayLoggedInvalue = 1>
< input type =hiddenname =signUpvalue =1>
< input type =submitname =submitvalue =注册!>
< / form>

< form method =post>
< input type =emailname =emailplaceholder =Your Email Eg。JoBloggs@me.co.uk>
< input type =passwordname =passwordplaceholder =Password>
< input type =checkboxname =stayLoggedInvalue = 1>
< input type =hiddenname =signUpvalue =0>
< input type =submitname =submitvalue =Log In!>
< / form>


解决方案

复选框只发送值WHE CHECKED。因此,您必须执行 isset($ _ POST ['stayLoggedIn'])以查看是否选择了该值,否则该索引将不存在于PHP POST值中。 / p>

I am making a form and I wish for the form to be able to be submitted when the checkbox is either ticked or checked. I don't get any other errors when I login without checking the box apart from this one

Notice: Undefined index: stayLoggedIn in /home/sites/2a/d/dbcf5d6440/public_html/MySQL/Challenges/Secretdiary.php on line 91

Here is my code!

<?php

session_start();

 $error="";

if (array_key_exists("logout", $_GET)) {

    unset($_SESSION);
    setcookie("id", "", time() - 60*60);
    $_COOKIE["id"] = "";

} else if(array_key_exists("id", $_SESSION) OR array_key_exists("id", $_COOKIE)) {

    header("Location: loggedinpage.php");
}

    if(array_key_exists("submit", $_POST)) {

        $link = mysqli_connect("XXX", "XXX", "XXX", "XXX");

            if (mysqli_connect_error()) {

                die("Database Connection Error");
            }



        if(!$_POST['email']) {

            $error.= "An Email Address is required<br>";
        }

        if(!$_POST['password']) {

            $error.= "A Password is required<br>";
        }

        if($error != "") {

            $error = "<p>There were error(s) in your form</p>".$error;

        } else {

            if($_POST['signUp'] == '1' ) {

            $query = "SELECT id FROM `users` WHERE email = '".mysqli_real_escape_string($link, $_POST['email'])."' LIMIT 1";
            $result = mysqli_query($link, $query);
            if (mysqli_num_rows($result) > 0) {

                $error = "That email address is taken.";

            } else {

                $query = "INSERT INTO `users` (`email`, `password`) VALUES('".mysqli_real_escape_string($link, $_POST['email'])."', '".mysqli_real_escape_string($link, $_POST['password'])."')";

                if (!mysqli_query($link, $query)) {

                    $error="<p>Could not sign you up, please try again</p>";

                } else {

                    $query = "UPDATE `users` SET password = '".md5(md5(mysqli_insert_id($link)).$_POST['password']). "' WHERE id = ".mysqli_insert_id($link)." LIMIT 1";

                    mysqli_query($link, $query);
                    $_SESSION['id'] = mysqli_insert_id($link);
                    if ($_POST['stayLoggedIn'] == '1') {

                        setcookie("id", mysqli_insert_id($link), time() +  60*60*24*365);
                    }


                } header("Location: loggedinpage.php");


            } 


        } else {

                $query = "SELECT * FROM `users` WHERE email = '".mysqli_real_escape_string($link, $_POST['email'])."'";

                $result = mysqli_query($link, $query);
                $row = mysqli_fetch_array($result);
                if (array_key_exists("id", $row)) {

                    $hashedPassword = md5(md5($row['id']).$_POST['password']);
                    if ($hashedPassword == $row['password']) {

                        $_SESSION['id'] = $row['id'];
                        if ($_POST['stayLoggedIn'] == '1') {

                            setcookie("id", $row ($link), time() +  60*60*24*365);
                    }
                    }
                } 

                }


    }

    }



?>




<div id="error"><?php echo $error; ?></div>
<form method="post">
    <input type="email" name="email" placeholder="Your Email Eg. JoBloggs@me.co.uk">
    <input type="password" name="password" placeholder="Password">
    <input type="checkbox" name="stayLoggedIn" value=1>
    <input type="hidden" name="signUp" value="1">
    <input type="submit" name="submit" value="Sign Up!">
</form>

<form method="post">
    <input type="email" name="email" placeholder="Your Email Eg. JoBloggs@me.co.uk">
    <input type="password" name="password" placeholder="Password">
    <input type="checkbox" name="stayLoggedIn" value=1>
    <input type="hidden" name="signUp" value="0">
    <input type="submit" name="submit" value="Log In!">
</form>

解决方案

Checkboxes only send the value WHEN CHECKED. So you have to do an isset($_POST['stayLoggedIn']) to see if the value was selected, otherwise that index will not exist in the PHP POST value.

这篇关于只有当你点击复选框时,表单才能工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆