Как я могу добавить поля формы в php / MySQL форму входа, которых нет в базе данных, чтобы отправить ее по электронной почте - PullRequest
0 голосов
/ 12 февраля 2020

В настоящее время у меня есть простая форма входа в систему, которая использует «код доступа» для получения доступа к части моего сайта и «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" );?>

Так что единственное, что я не могу понять, как это сделать, это передать имя и фамилию из формы, чтобы она была отправлена ​​в электронном письме, но в противном случае не используется.

Спасибо

1 Ответ

1 голос
/ 13 февраля 2020

Мне удалось выяснить, как сделать то, что задал мой первоначальный вопрос

Я добавил это к начальной части моего php сценария входа в систему

//if(isset($_POST['login'])){
    if($_SERVER["REQUEST_METHOD"] == "POST") 
    {
        $firstname=$_POST['firstname']; <---- this line here
        $lastname=$_POST['lastname']; <--- this line here
        $accesscode=mysqli_real_escape_string($conn,$_POST['accesscode']);
        $password=mysqli_real_escape_string($conn,$_POST['password']);
.....
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'];
            $_SESSION['firstname'] = $_POST['firstname']; <-- this line here
            $_SESSION['lastname'] = $_POST['lastname']; <-- this line here
            //Redirecting User Based on Role
            header("Location: " . $row['url']);

Затем я добавил следующее на мой электронный код

$message = "Resource Access by: " . $_SESSION['patientres']['accesscode'] . "\n\nUser: " . $_SESSION['firstname'] ." ". $_SESSION['lastname'] ."\n\nAt:

Спасибо за помощь всем. Я все еще пытаюсь получить все в готовых заявлениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...