Салам, все парни … Я застрял в нескольких функций на одной странице PHP
например, я создал login () и home (), когда я делаю свой логин, он показывает home, но логин все еще там, как я могу просматривать только одну функцию за раз ..
вот сценарий
<?php
function login() {
if (isset($_POST['sub'])) {
$user = $_POST['user'];
$gender = isset($_POST['check']);
if ($user == "admin" && $gender == "male") {
echo "oh boy you have access to this site";
home();
} else if ($user == "admin" && $gender == "female") {
echo " Hey Lady.. You have access to this site";
home();
} else if ($gender == "" || $gender != "male" || $gender != "female") {
echo "please select gender";
} else if ($user == "" || $user == " ") {
echo "input username";
} else {
echo " '" . $user . "' " . " you enter is wrong";
}
}
}
?><?php
login();
?>
<form method="POST" >
<input type="text" name="user" placeholder="username" /><br>
Male: <input type="radio" value="male" name="check"> female : <input type="radio"value="female" name="check" > <br> <input type="submit" name="sub">
</form>
<?php
function home() {
?>
<p><center>Practice of string a simple test home() </center></p>
<?php
$a = "multi thinker ";
$w = ucwords($a);
$trim = trim($a, " ");
$trim = ltrim($a, " ");
$trim = rtrim($a, " ");
echo $w . " " . $trim;
}
?>
<?php
function home(){
header("Location: http://google.com");
}
function login() {
if (isset($_POST['sub'])) {
$user = $_POST['user'];
$gender = isset($_POST['check']);
if ($user == "admin" && $gender == true) {
echo "oh boy you have access to this site";
home();
} else if ($user == "admin" && $gender == false) {
echo " Hey Lady.. You have access to this site";
home();
} else if ($gender == "" || $gender != "male" || $gender != "female") {
echo "please select gender";
} else if ($user == "" || $user == " ") {
echo "input username";
} else if ($user != "admin") {
echo " '" . $user . "' " . " you enter is wrong";
} else {
}
}else{
//$_POST['sub'] does not exist, therefore output login form
$out = '
<form method="POST" >
<input type="text" name="user" placeholder="username" /><br>
Male: <input type="radio" value="male" name="check">
Female : <input type="radio" value="female" name="check" > <br>
<input type="submit" name="sub">
</form>';
echo $out;
}
}
login();
?>
Если вы собираетесь разместить логин и домашний контент на одной странице, вам нужно указать состояние, чтобы указать, был ли логин успешным. Я вижу, вы установили $ user в вашей функции входа. Возможно, сделайте это глобальной переменной и проверьте ее наличие следующим образом:
<?php
$user = null; //nothing yet, will be set on successful login
function login() {
global $user;
... //same as you have
}
if( $user === null ) { //have not logged in yet
login(); //try to log in if we have post data
}
if( $user === null ) { //login failed or was not submitted yet
?>
<form method="POST">
... your login form goes here ...
</form>
<?php
return; //do not show the rest of the home page since we showed login
} //end if $user === null
function home() {
... your home function here ...
}
home();
?>
Вы можете улучшить организацию этого, но основная идея состоит в том, чтобы иметь if-then-else, который разветвляется на (a), это форма входа в систему, отправляемая сейчас, и (b) пользователь успешно вошел в систему.
Было бы лучше разделить это на несколько файлов. Есть много способов сделать это, например, проверка входа в систему и, если он отсутствует, выдача заголовка («Расположение: http://mydomanin.com/login«) редирект, затем со страницы входа в систему перенаправьте обратно после успешного входа.
Вы также можете сохранить $ user в файле cookie сеанса вместо глобальной переменной, чтобы пользователю не приходилось входить в систему при каждом обновлении страницы.