我的会话代码不起作用

时间:2015-02-06 17:22:12

标签: php session

帮助我

<?php
$_SESSION["error"] = "Some text.";

if(!isset($_SESSION["error"])) {
echo $_SESSION["error"];
unset($_SESSION["error"]);
}

?>

此代码无效。 这不是我的所有代码,在注册时设置会话。然后我重新加载页面,我想写那个会话。它没有去,我尝试删除未设置的会话,它工作。

如何修复 ... 我认为它首先删除该会话,然后尝试回应-.-

这里是完整的代码:

<?php 
session_start();

function email() {
    if(isset($_SESSION["email"])) {
        echo $_SESSION["email"];
    }
}

function meno() {
    if(isset($_SESSION["meno"])) {
        echo $_SESSION["meno"];
    }
}

function heslo() {
    if(isset($_SESSION["heslo"])) {
        echo $_SESSION["heslo"];
    }
}

function heslo2() {
    if(isset($_SESSION["heslo2"])) {
        echo $_SESSION["heslo2"];
    }
}

function vek() {
    if(isset($_SESSION["vek"])) {
        echo $_SESSION["vek"];
    }
}

?>

<meta charset="utf-8">

<form method="post" enctype="multipart/form-data">
** Prihlásovacie meno: <input name="meno" value="<?php meno(); ?>" /><br>
** Email: <input name="email" value="<?php email(); ?>" /><br>
** Heslo: <input name="heslo" type="password" value="<?php heslo(); ?>" /><br>
** Opäť heslo: <input name="heslo2" type="password" value="<?php heslo2(); ?>" /><br>
Pohlavie: <select name="pohlavie">
<?php 
    if(isset($_SESSION["pohlavie"])) {
        if($_SESSION["pohlavie"] == "Chlapec") {
            echo "<option value='Chlapec' selected>Chlapec</option><option value='Dievča'>Dievča</option>";
        }
        else if($_SESSION["pohlavie"] == "Dievča") {
            echo "<option value='Chlapec'>Chlapec</option><option value='Dievča' selected>Dievča</option>";
        }
    }
    else {
        echo "<option value='Chlapec'>Chlapec</option><option value='Dievča'>Dievča</option>";
    }
?> 
</select><br>
Vek: <input name="vek" value="<?php vek(); ?>" /><br>
Fotka: <input type="file" name="fileToUpload" /><br>
<button name="registrovat">Registrovať sa</button>
</form>

<?php



if(isset($_POST["registrovat"])) {
    $meno = $_POST["meno"];
    $email = $_POST["email"];
    $heslo = $_POST["heslo"];
    $heslo2 = $_POST["heslo2"];
    $pohlavie = $_POST["pohlavie"];
    $vek = $_POST["vek"];

    if(empty($meno) || empty($email) || empty($heslo) || empty($heslo2)) {
        $_SESSION["chyba"] = "Nevyplnil si všetky polia.";
        if(isset($meno)) {
            $_SESSION["meno"] = $meno;
        }
        if(isset($heslo)) {
            $_SESSION["heslo"] = $heslo;
        }
        if(isset($heslo2)) {
            $_SESSION["heslo2"] = $heslo2;
        }
        if(isset($email)) {
            $_SESSION["email"] = $email;
        }
        if(isset($vek)) {
            $_SESSION["vek"] = $vek;
        }
        if(isset($pohlavie)) {
            $_SESSION["pohlavie"] = $pohlavie;
        }
        header("Location: #");
    }
    else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $_SESSION["chyba"] = "Zadaný email neexistuje.";
        if(isset($meno)) {
            $_SESSION["meno"] = $meno;
        }
        if(isset($heslo)) {
            $_SESSION["heslo"] = $heslo;
        }
        if(isset($heslo2)) {
            $_SESSION["heslo2"] = $heslo2;
        }
        if(isset($email)) {
            $_SESSION["email"] = $email;
        }
        if(isset($vek)) {
            $_SESSION["vek"] = $vek;
        }
        if(isset($pohlavie)) {
            $_SESSION["pohlavie"] = $pohlavie;
        }
        header("Location: #");
    }
    else if($heslo !== $heslo2) {
        $_SESSION["chyba"] = "Heslá sa nezhodujú.";
        if(isset($meno)) {
            $_SESSION["meno"] = $meno;
        }
        if(isset($heslo)) {
            $_SESSION["heslo"] = $heslo;
        }
        if(isset($heslo2)) {
            $_SESSION["heslo2"] = $heslo2;
        }
        if(isset($email)) {
            $_SESSION["email"] = $email;
        }
        if(isset($vek)) {
            $_SESSION["vek"] = $vek;
        }
        if(isset($pohlavie)) {
            $_SESSION["pohlavie"] = $pohlavie;
        }
        header("Location: #");
    }

    else {
        require("db.php");
        $result1 = $mysql->query("SELECT * FROM `uzivatelia` WHERE `email`='{$email}'");
        $result2 = $mysql->query("SELECT * FROM `uzivatelia` WHERE `meno`='{$meno}'");

        if($result1->num_rows) {
            $_SESSION["chyba"] = "Užívateľ s týmto menom už existuje.";
            if(isset($meno)) {
                $_SESSION["meno"] = $meno;
            }
            if(isset($heslo)) {
                $_SESSION["heslo"] = $heslo;
            }
            if(isset($heslo2)) {
                $_SESSION["heslo2"] = $heslo2;
            }
            if(isset($email)) {
                $_SESSION["email"] = $email;
            }
            if(isset($vek)) {
                $_SESSION["vek"] = $vek;
            }
            if(isset($pohlavie)) {
                $_SESSION["pohlavie"] = $pohlavie;
            }
            header("Location: #");
        }
        else if($result2->num_rows) {
            $_SESSION["chyba"] = "Užívateľ s týmto emailom už existuje.";
            if(isset($meno)) {
                $_SESSION["meno"] = $meno;
            }
            if(isset($heslo)) {
                $_SESSION["heslo"] = $heslo;
            }
            if(isset($heslo2)) {
                $_SESSION["heslo2"] = $heslo2;
            }
            if(isset($email)) {
                $_SESSION["email"] = $email;
            }
            if(isset($vek)) {
                $_SESSION["vek"] = $vek;
            }
            if(isset($pohlavie)) {
                $_SESSION["pohlavie"] = $pohlavie;
            }
            header("Location: #");
        }

        else {
            $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
            if($check !== false) {
                $target_dir = "profilovky/";
                $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

                if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
                    $mysql->query("INSERT INTO `uzivatelia` (`meno`, `email`, `heslo`, `pohlavie`, `vek`, `fotka`) VALUES ('{$meno}', '{$email}', '{$heslo}', '{$pohlavie}', '{$vek}', '{$fotka}')") or die ("Zas majitel debilne nakodoval zapsi uzivatela do datbazy.");
                }

            } else {
                $_SESSION["chyba"] = "Súbor nie je obrázok.";
                if(isset($meno)) {
                    $_SESSION["meno"] = $meno;
                }
                if(isset($heslo)) {
                    $_SESSION["heslo"] = $heslo;
                }
                if(isset($heslo2)) {
                    $_SESSION["heslo2"] = $heslo2;
                }
                if(isset($email)) {
                    $_SESSION["email"] = $email;
                }
                if(isset($vek)) {
                    $_SESSION["vek"] = $vek;
                }
                if(isset($pohlavie)) {
                    $_SESSION["pohlavie"] = $pohlavie;
                }
                header("Location: #");
            }
        }

    }
}

if(isset($_SESSION["error"])) {
echo $_SESSION["error"];
unset($_SESSION["error"]);
}



?>

文件db.php:

<?php
$mysql = new mysqli("localhost", "root", "", "cms");
?>

1 个答案:

答案 0 :(得分:1)

正如@ Rizier123指出的那样,请确保session_start()位于代码的顶部。

此外,当错误设置&#39;时,您的if / then语句会回复错误。因为(!)。试试吧:

if(isset($_SESSION["error"])) {
echo $_SESSION["error"];
unset($_SESSION["error"]);
}