PHP - 用户登录后显示信息的问题

时间:2017-02-06 16:47:49

标签: php html mysql

我几天前就开始工作了,但是一旦用户登录了他们的帐户,我似乎无法在屏幕上显示会话ID。我有两个PHP,我一直在努力,我已经使用在线检查器检查了两个错误,并且没有任何问题。因此,使用下面的内容,一旦用户登录,它将在网站的标题内显示其会话ID,但即使我正确登录(我已经检查过它'用我的数据库登录),它显示的所有内容"你没有登录!"。

Login.inc.php

    <?php
    include '../dbh.php';

    $email = $_POST['email'];
    $pwd   = $_POST['pwd'];

    $sql    = "SELECT * FROM user WHERE email='$email' AND pwd='$pwd'";
    $result = mysqli_query($conn, $sql);

    if (!$row = mysqli_fetch_assoc($result)) {
        echo "You are not signed in!";
    } else {
        $_SESSION['id'] = $row['id'];
    }
    header("Location: ../index.php");
    ?>

site_header.php

<head>
    <?php
        session_start();
       ?>
        <link rel="stylesheet" type="text/css" href="vendors/css/normalize.css">
        <link rel="stylesheet" type="text/css" href="vendors/css/grid.css">
        <link rel="stylesheet" type="text/css" href="vendors/css/ionicons.min.css">
        <link rel="stylesheet" type="text/css" href="css/style.css">
        <link href="https://fonts.googleapis.com/css?family=Lato:400,300,100,300,200italic" rel="stylesheet" type="text/css">
        <title>iBPBuyer</title>
</head>
<body>
   <header>
      <nav>
         <ul>
            <li><a href="index.php">HOME</a></li>
            <li><a href="signup.php">SIGN UP</a></li>
            <?php
               echo "<form action='includes/login.inc.php' method='POST'>
                    <input type='email' name='email' placeholder='E-Mail'>
                    <input type='password' name='pwd' placeholder='Password'>
                    <button type='submit'>Login</button>
                </form>";
               ?>
            <?php
               if(isset($_SESSION['id'])) {
                   echo $_SESSION['id'];
               } else {
                   echo "You are not logged in!";
               }
               ?>
         </ul>
      </nav>
   </header>

2 个答案:

答案 0 :(得分:1)

你不只是想回应一些东西。我建议使用经过验证的标志

<%= form_for(partner) do |f|  %>
    <% if partner.errors.any? %>
        <div id="error_explanation">
          <h2><%= pluralize(partner.errors.count, "erro(s)") %> não deixa(m) o cadastro ser efetuado:</h2>
          <ul>
            <% partner.errors.full_messages.each do |message| %>
                <li><%= message %></li>
            <% end %>
          </ul>
        </div>
    <% end %>

  <h3>Dados Funcionais</h3>
  <div class="dados-funcionais">
        <div class="row">
            <div class="field col-md-4">
                <%= f.label :registry_number %>
                <%= f.number_field :registry_number %>
            </div>

            <div class="field col-md-4">
                <%= f.label :name %>
                <%= f.text_field :name %>
            </div>

            <div class="field col-md-4">
                <%= f.label :institution %>
                <%= f.text_field :institution %>
            </div>
    </div>

    <div class="row">
            <div class="field col-md-4"><br>
               <%= f.label :secretary %>
               <%= f.collection_select(:secretary, Secretary.all, :name, :name, prompt: true) %>
            </div> <br>


            <div class="field col-md-4">
              <%= f.label :position %>
              <%= f.text_field :position %>
            </div>

            <div class="field col-md-4">
              <%= f.label :base_salary %>
              <%= f.text_field :base_salary %>
            </div>

            <div class="field organ-select">
              <%= f.label :organ %>
              <%= select("partner", "organ", options_for_select([["Prefeitura Municipal de Bertioga", "PMB"],["Câmara Municipal de Bertioga", "CMB"],["Bertprev", "BTP"]]), prompt: true) %>
            </div>
    </div>
  </div>

  <h3>Dados Pessoais</h3>
  <div class="dados-pessoais">
      <div class="row">
            <div class="field col-md-4">
              <%= f.label :RG %>
              <%= f.text_field :rg, :placeholder => "__-___-___-_" %>
            </div>

            <div class="field col-md-4">
              <%= f.label :CPF %>
              <%= f.text_field :cpf, :placeholder => "___-___-___-__" %>
            </div>

            <div class="field col-md-4">
              <%= f.label :email %>
              <%= f.text_field :email %>
            </div>
      </div>

      <div class="row linha">
            <div class="field col-md-4">
              <%= f.label :phone_number %>
              <%= f.text_field :phone_number, :placeholder => "(__) _____-____" %>
            </div>

            <div class="field col-md-4">
              <%= f.label :phone_number2 %>
              <%= f.text_field :phone_number2, :placeholder => "(__) ____-____" %>
            </div>

            <div class="field col-md-4">
              <%= f.label :birth_city %>
              <%= f.text_field :birth_city %>
            </div>
      </div>
      <div class="row linha">
            <div class="field col-md-4 partner_birthday">
              <%= f.label :birthday %>
              <%= f.date_select :birthday, start_year: 1940 %>
            </div>

            <div class="field col-md-4">
              <%= f.label :spouse %>
              <%= f.text_field :spouse %>
            </div>
     </div>
  </div>

  <h3>Dados Residenciais</h3>
  <div class="dados-residenciais">
     <%= f.fields_for :address do |ff| %>
          <div class="row">
                  <div class="field col-md-4">
                    <%= ff.label :street %>
                    <%= ff.text_field :street %>
                  </div>

                  <div class="field col-md-4">
                    <%= ff.label :number %>
                    <%= ff.text_field :number %>
                  </div>

                  <div class="field col-md-4">
                    <%= ff.label :neighborhood %>
                    <%= ff.text_field :neighborhood %>
                  </div>
          </div>

          <div class="row linha">
                 <div class="field partner_type_home col-md-4">
                   <%= ff.label :type_home %>
                   <%= select("address", "type_home", options_for_select([["Apartamento", "APTO"],["Casa", "CASA"]]), prompt: true) %>
                 </div>

                <div class="field col-md-4">
                  <%= ff.label :city %>
                  <%= ff.text_field :city %>
                </div>

                <div class="field col-md-4">
                  <%= ff.label :state %>
                  <%= ff.text_field :state %>
                </div>

                <div class="field">
                  <%= ff.label :zipcode %>
                  <%= ff.text_field :zipcode %>
                </div>
          </div>
     <% end %>
   </div>


            <h3>Dependentes</h3>
            <div id="dependent-fields">
              <span class="adicionar-dependente"><%=
                link_to_add_association 'Adicionar Dependente', f, :dependents,
                                        'data-association-insertion-node' => "#dependent-fields ul"
              %></span>
                <ul>
                    <%= f.fields_for :dependents do |dependent| %>
                    <%= render partial: 'dependent_fields', locals: {f: dependent} %>
                    <% end %>
                </ul>
            </div>
      </div>

    <div class="dates">
          <div class="date1">
            <%= f.label :union_admission %> <br>
            <%= f.date_select :union_admission, start_year: 1940 %>
          </div>
          <div class="date2">
            <%= f.label :start_date %> <br>
            <%= f.date_select :start_date, start_year: 1940 %>
          </div>
    </div>

    <div class="actions">
        <%= f.submit %>
    </div>

<% end %>

然后在您的视图中,您可以执行此操作

class PartnersController < ApplicationController
  before_action :set_partner, only: [:show, :edit, :update, :destroy]

  # GET /partners
  # GET /partners.json


  def index
    @partners = Partner.all
  end

  # GET /partners/1
  # GET /partners/1.json
  def show
  end

  # GET /partners/new
  def new
    @partner = Partner.new
    @partner.build_address
    @partner.dependents.build
  end

  def consultar
    @partners = Partner.all
  end

  def excluir
    @partners = Partner.all
  end

  # GET /partners/1/edit
  def edit
    @partner.build_address
    @partner.dependents.build
  end

  # POST /partners
  # POST /partners.json
  def create
    @partner = Partner.new(partner_params)

    respond_to do |format|
      if @partner.save
        format.html { redirect_to @partner, notice: 'O associado foi cadastrado com sucesso.' }
        format.json { render :show, status: :created, location: @partner }
      else
        format.html { render :new }
        format.json { render json: @partner.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /partners/1
  # PATCH/PUT /partners/1.json
  def update
    respond_to do |format|
      if @partner.update(partner_params)
        format.html { redirect_to @partner, notice: 'O cadastro do associado foi atualizado com sucesso.' }
        format.json { render :show, status: :ok, location: @partner }
      else
        format.html { render :edit }
        format.json { render json: @partner.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /partners/1
  # DELETE /partners/1.json
  def destroy
    @partner.destroy
    respond_to do |format|
      format.html { redirect_to partners_url, notice: 'Partner was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_partner
      @partner = Partner.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def partner_params
      params.require(:partner).permit(:name, :registry_number, :institution, :organ, :secretary, :position, :base_salary, :rg, :cpf, :address_id, :email, :phone_number, :phone_number2, :birth_city, :birthday, :spouse,  :union_admission, :start_date, :address_attributes => [:id, :street, :number, :type_home, :neighborhood, :city, :state, :zipcode, :partner_id], :dependents_attributes => [:id, :name, :partner_id, :_destroy])
    end
end

答案 1 :(得分:0)

您需要header("Location: ../index.php");发送或回复任何内容。

由于标头是与echo "You are not logged in"一起发送的,因此它不会发送另一个标题来重定向。

解决方法是eb跳过echo,或使用Js重定向用户。

if (!$row = mysqli_fetch_assoc($result)) {
    header("Location: ../index.php");

} else {
    $_SESSION['id'] = $row['id'];
}

这会起作用

进一步向下,同样适用于session_start,因为它需要在标头中发送会话cookie。

这个头标记也引起了问题

<head>
    <?php
        session_start();
       ?>

检查你的错误日志,我打赌你已经发送了一个标题。

所以最后,在开始会话或使用header()之前,你不能发送或回显任何东西。另一个解决方法是使用输出缓冲区。见http://php.net/manual/en/function.ob-start.php

http://php.net/manual/en/function.header.php

http://php.net/manual/en/function.session-start.php