В настоящее время у меня есть простая форма входа в систему, которая использует «код доступа» для получения доступа к части моего сайта и «admin» и «пароль» для входа в административный раздел. Здесь не хранятся личные данные, поэтому безопасность не имеет первостепенного значения.
Вход в систему работает нормально, и я могу получить доступ к сайту.
Когда кто-то входит в систему, он переходит на «страницу загрузки» который отправляет мне электронное письмо через php, чтобы сообщить, что оно было открыто.
Я пытаюсь добавить 2 поля формы в форму входа, которые не существуют в базе данных, но данные введены в поля отправляются по электронной почте php.
Поля, которые я добавляю, - это имя и фамилия. Поля кода доступа и пароля работают как обычно. Весь процесс входа в систему работает, но я не могу понять, как передать данные формы от имени и фамилии в раздел электронной почты.
Код формы
<!-- start login form -->
<div class="contact-form">
<?php if(isset($error)){ echo $error; }?>
<form method="POST" action="" role="form">
<div class="form-group has-feedback">
<label for="name">Access Code*</label>
<input type="text" class="form-control" name="accesscode" placeholder="">
<i class="fa fa-user form-control-feedback"></i>
</div>
<div class="form-group has-feedback">
<label for="name">First Name*</label>
<input type="text" class="form-control" name="firstname" placeholder="">
<i class="fa fa-user form-control-feedback"></i>
</div>
<div class="form-group has-feedback">
<label for="name">Last Name*</label>
<input type="text" class="form-control" name="lastname" placeholder="">
<i class="fa fa-user form-control-feedback"></i>
</div>
<div class="form-group has-feedback">
<label for="name">Password (if applicable)</label>
<input type="password" class="form-control" name="password" placeholder="">
<i class="fa fa-key form-control-feedback"></i>
</div>
<input type="submit" name="login" value="Login" class="btn btn-default"/></td>
</form>
</div>
<!-- end login form -->
PHP код, который отвечает на форма - это то, что я пробовал до сих пор
<?php
session_start();
require_once("config.php");
//Getting Input value
//process first form
if(isset($_POST['login'])){
$accesscode=mysqli_real_escape_string($conn,$_POST['accesscode']);
$password=mysqli_real_escape_string($conn,$_POST['password']);
$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
if(empty($accesscode)){
$error= 'Fields are Mandatory';
}else{
//Checking Login Detail
$result=mysqli_query($conn,"SELECT*FROM patientres WHERE accesscode='$accesscode' AND password='$password'");
$row=mysqli_fetch_assoc($result);
$count=mysqli_num_rows($result);
if($count==1){
$_SESSION['patientres']=array(
'accesscode'=>$row['accesscode'],
'password'=>$row['password'],
'role'=>$row['role'],
'libname'=>$row['libname'],
'url'=>$row['url']
);
$url=$_SESSION['patientres']['url'];
$firstname=$_SESSION['patientres']['firstname'];
$lastname=$_SESSION['patientres']['lastname'];
//Redirecting User Based on Role
header("Location: " . $row['url']);
}
else{
$error='<div class="alert alert-danger fade in" role="alert"><button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button><strong>Invalid Access Code</strong><br><br>Check your code and try again.<br>If your code is correct and does not work, please <a href="******" class="alert-link">contact us.</a> </div>';
}
}
}
?>
Это мой обновленный код php, который я пытался преобразовать в подготовленные утверждения, но он загружает страницу входа, но при отправке я просто получаю белый экран. Я чувствую, что перенаправление заголовка не работает.
<?php
session_start();
require_once("config.php");
//Getting Input value
//process first form
//if(isset($_POST['login'])){
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$accesscode=mysqli_real_escape_string($conn,$_POST['accesscode']);
$password=mysqli_real_escape_string($conn,$_POST['password']);
if(empty($accesscode))
{
$error= 'Fields are Mandatory';
}else
{
// Prepare our SQL, preparing the SQL statement will prevent SQL injection.
$stmt = $mysqli->prepare("SELECT * FROM patientres WHERE accesscode = ? AND password =?");
$stmt -> bind_param("ss", $_POST['accesscode'], $_POST['password']);
$stmt -> execute();
$result = $stmt -> get_result();
if($result->num_rows === 0) exit('No rows');
while($row = $result->fetch_assoc())
{
$_SESSION['patientres']=array(
'accesscode'=>$row['accesscode'],
'password'=>$row['password'],
'role'=>$row['role'],
'libname'=>$row['libname'],
'url'=>$row['url']
);
//$url=$_SESSION['patientres']['url'];
//Redirecting User Based on Role
header("Location: " . $row['url']);
}
$stmt->close();
}
}
?>
Затем он переходит на другую страницу, которая обрабатывает этот скрипт
<?php
session_start();
//Checking User Logged or Not
if(empty($_SESSION['patientres'])){
header('index.php');
}
?>
<?php
$ip = $_SERVER["REMOTE_ADDR"];
$ipdat = @json_decode(file_get_contents(
"http://www.geoplugin.net/json.gp?ip=" . $ip));
$to = 'someemail@email.com';
$subject = 'Patient Resource Access by: ' . $_SESSION['patientres']['accesscode'];
$message = "Resource Access by: " . $_SESSION['patientres']['accesscode'] . "\n\nUser: " . $_SESSION['patientres']['firstname'] ."\n\nAt: " . date('d/m/Y, H:i:s')."\n\nCountry: " . $ipdat->geoplugin_countryName . "\nCity: ". $ipdat->geoplugin_city . "\nLatitude: ". $ipdat->geoplugin_latitude . "\nLongitude: ". $ipdat->geoplugin_longitude . "\nTimezone: ". $ipdat->geoplugin_timezone;
$message = "Message sent from IP: $ip\n\n" .$message;
//$message. = date('m/d/Y, H:i:s');
$headers = 'From: Some Resources' . "\r\n" .
//'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
//redirect
header( "refresh:4;url=../functional.php" );?>
Так что единственное, что я не могу понять, как это сделать, это передать имя и фамилию из формы, чтобы она была отправлена в электронном письме, но в противном случае не используется.
Спасибо