我的会话代码不起作用


My session codes doesnt work

帮助我

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

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

此外,由于(!)的原因,if/then语句会说"当错误为NOT集时,回显错误"。试试这个:

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