【问题标题】:$_FILE APPLY IN $_poST$_FILE 在 $_post 中申请
【发布时间】:2018-04-29 04:02:07
【问题描述】:

我是PHP 的初学者,刚刚开始学习。我正在尝试制作注册页面和登录页面。一旦我选择了usernamepassword,我的登录页面就可以正常工作,它还可以检测到错误的密码,但是我通过注册页面上传的个人资料图片没有出现在欢迎页面上。一旦我添加了配置文件,登录页面就不再工作了。我希望你们能理解我的问题并帮助我找到解决方案。先感谢您。我在下面附上我的代码:

REGISTER FORMPHP

<?php
session_start();
$_SESSION['message'] = '';
$mysqli=new MySQLi('127.0.0.1','root','','accounts');

if($_SERVER["REQUEST_METHOD"] == "POST") {
    if ($_POST['password']== $_POST['confirmpassword']) {

        $username = $mysqli->real_escape_string($_POST['username']);
        $email = $mysqli->real_escape_string($_POST['email']);
        $password = md5($_POST['password']);
        $profile_path = $mysqli->real_escape_string('images/'.$_FILES['profile']['name']);


        if (preg_match("!image!", $_FILES['profile']['type'])) {

            if (copy($_FILES['profile']['tmp_name'],$profile_path)){
                $_SESSION['username'] =$username;
                $_SESSION['profile'] =$profile_path;


                $sql ="INSERT INTO users(username,email,password,profile)"
                ."VALUES ('$username','$email','$password','$profile_path')";       

                if($mysqli->query($sql)=== true) {
                          $_SESSION['message'] =  'Registration successful!
                          Added $username to the database!';
                     header("location:RegisterLogin.php");
                      }
                      else {
                          $_SESSION['message'] = "User could not be added to the database!";
            }
        }
        else{
            $_SESSION['message'] = "file failed!";

        }
        }
        else {
            $_SESSION['message'] = "Please only upload GIF,JPG, or PNG images!";
    }
    }
    else{
        $_SESSION['message'] = "two password do not match!";
    }
    }

?> 
lOGIN fORM

    <?php 
    session_start();
    $_SESSION['message']=''; 
    $mysqli=new MySQLi('127.0.0.1','root','','accounts');



    if(isset($_POST['login'])) {
        $username = $mysqli->real_escape_string($_POST['username']);
            $password = md5($_POST['password']);
            $profile_path = $mysqli->real_escape_string(isset($_FILES['profile']));
             $sql="SELECT * FROM users WHERE username='$username' AND password='$password' AND profile = 'profile_path'";
          $result = mysqli_query($mysqli,$sql);

            if(mysqli_affected_rows($mysqli) == 1){
                  $_SESSION['username'] = $username;
                  $_SESSION['profile'] = $profile_path;
                  $_SESSION['message'] =  "Registration successful!";
        header("location:Welcome.php");
        }
        else{
            $_SESSION['message'] = "Login Failed!"; 
        }
    }



    ?>

欢迎 PHP

<link rel="stylesheet" href="Form2.css" />
<?php session_start(); ?>
<div class="body content">
<div class="welcome">
<div class="alert alert-success"><?= $_SESSION['message']?></div>
Welcome To Your Profile <span class="user"><img src='<?=$_SESSION['profile']?>'</span>

【问题讨论】:

    标签: php sql file post phpmyadmin


    【解决方案1】:

    更新您的代码,如下所示

    注册表

    <?php
        session_start();
        $_SESSION['message'] = '';
        $mysqli= new mysqli('127.0.0.1','root','','accounts');
    
        if(isset($_POST) && array_filter($_POST)){
            if ($_POST['password'] == $_POST['confirmpassword']) {
                $username = $mysqli->real_escape_string($_POST['username']);
                $email = $mysqli->real_escape_string($_POST['email']);
                $password = md5($_POST['password']);
                $profile_path = $mysqli->real_escape_string('images/'.$_FILES['profile']['name']);
                if(!empty($username) && !empty($email) && !empty($password) && !empty($_FILES['profile']['name']){
                    if (preg_match("!image!", $_FILES['profile']['type'])) {
                        if (move_uploaded_file($_FILES['profile']['tmp_name'],$profile_path)){
                            $_SESSION['username'] = $username;
                            $_SESSION['profile'] = $profile_path;
                            $sql ="INSERT INTO users(username,email,password,profile) VALUES ('$username','$email','$password','$profile_path')";
                            if($mysqli->query($sql) == true) {
                                $_SESSION['message'] =  "Registration successful! Added $username to the database!";
                                header("Location: RegisterLogin.php");
                            }
                            else { $_SESSION['message'] = "User could not be added to the database!"; }
                        } else {$_SESSION['message'] = "file failed!";}
                    } else { $_SESSION['message'] = "Please only upload GIF,JPG, or PNG images!"; }
                }else{ $_SESSION['message'] = "values are missing"; }        
            } else{ $_SESSION['message'] = "two password do not match!"; }
        }
    ?>
    

    登录表格

    <?php
        session_start();
        $_SESSION['message']=''; 
        $mysqli= new mysqli('127.0.0.1','root','','accounts'););
    
        if(isset($_POST['login'])){
            $username = $mysqli->real_escape_string($_POST['username']);
            $password = md5($_POST['password']);
            $sql="SELECT * FROM users WHERE username='$username' AND password='$password'";
            $result = $mysqli->query($sql);
            if($result->num_rows > 0){
                $row = $result->fetch_assoc();
                $_SESSION['username'] = $username;
                $_SESSION['profile'] = 'images/'.$row['profile'];
                $_SESSION['message'] =  "Login successful!";
                header("Location: Welcome.php");
            }else{ $_SESSION['message'] = "Login Failed!";}
        }
    ?>
    

    欢迎 PHP

    <?php session_start(); ?>
    <link rel="stylesheet" href="Form2.css" />
    <div class="body content">
    <div class="welcome">
    <div class="alert alert-success"><?= $_SESSION['message']?></div>
    Welcome To Your Profile <span class="user"><img src='<?=$_SESSION['profile'];?>'/></span>
    

    【讨论】:

      【解决方案2】:

      您在 login.php 中错误地设置了会话值。在下面的代码中,使用 mysqli_fetch_array() 来检索 $_SESSION 变量的正确值。

      Login.php

      试试这个:

      <?php 
          session_start();
          $_SESSION['message']=''; 
          $mysqli=new MySQLi('127.0.0.1','root','','accounts');
      
          if(isset($_POST['login'])) {
              $username = $mysqli->real_escape_string($_POST['username']);
              $password = md5($_POST['password']);
              $sql="SELECT * FROM users WHERE username='$username' AND password='$password' LIMIT 1;";
              $result = mysqli_query($mysqli,$sql);
      
              if(mysqli_num_rows($result)>0){
                  $row = mysqli_fetch_array($result);
                  $_SESSION['username'] = $row['username'];
                  $_SESSION['profile'] = $row['profile'];
                  $_SESSION['message'] =  "Registration successful!";
                  header("location:Welcome.php");exit();
              }
              else{
                  $_SESSION['message'] = "Login Failed!"; 
              }
          }
      ?>
      

      Welcome.php

      &lt;?php session_start(); ?&gt; 移动到文档的最顶部。在调用 session_start() 之前不能输出任何内容(HTML 内容或回显),否则会话将失败,除非使用输出缓冲。

      【讨论】:

        猜你喜欢
        • 2015-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多