0

このスクリプトをローカル サーバーで何度も実行しましたが、問題はありませんでした。ただし、それらを Web サーバーにアップロードすると、未定義のエラーが発生しました。混乱します。

何が問題ですか??

データベース テーブルは既に定義されています。

ローカルの PHP バージョン: 5.3.5、Web サーバーの PHP バージョン: 5.3.26

これらのエラーが発生します:

            A PHP Error was encountered

            Severity: Notice
            Message:  Undefined index: username
            Filename: models/user.php
            Line Number: 7

            A PHP Error was encountered

            Severity: Notice
            Message:  Undefined index: password
            Filename: models/user.php
            Line Number: 8

            A PHP Error was encountered

            Severity: Warning
            Message:  Cannot modify header information - headers already sent by (output started at /home/caspian/domains/caspiansang.ir/public_html/system/core/Exceptions.php:185)
            Filename: views/login.php
            <p>Line Number: 1

コントローラー/verifylogin.php:

            <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

            class VerifyLogin extends CI_Controller {

             function __construct()
             {
               parent::__construct();
               $this->load->model('user','',TRUE);
             }

             function index()
             {

                    $result = $this->user->validate();
                    if(! $result){
                     $data['msg'] = 'اطلاعات وارد شده اشتباه است!';
                    $this->load->view('login',$data);
                    }else{
                        redirect('admin');
                    }        
                }


            }

モデル/user.php

            <?php
            Class User extends CI_Model
            {

             public function validate(){

                    $username = $_POST['username'];
                    $password = $_POST['password'];


                    // Prep the query
                    $this->db->where('username', $username);
                    $this->db->where('password', md5($password));

                    // Run the query
                    $query = $this->db->get('admin');
                    // Let's check if there are any results
                    if($query->num_rows() == 1)
                    {
                        // If there is a user, then create session data
                        $row = $query->row();
                        $data = array(
                                'userid' => $row->userid,
                                'fname' => $row->fname,
                                'lname' => $row->lname,
                                'username' => $row->username,
                                'validated' => true
                                );
                        $this->session->set_userdata($data);
                        return true;
                    }

                    return false;
                }


            }

ビュー/login.php:

       <?php echo form_open('verifylogin'); ?>
           <br>
                    <div style="font-color:black; padding-bottom:10px;"> <?php if(!   empty($msg)) echo $msg;?></div>        

         < label for="username">نام کاربری</label>
         <input type="text" size="20" id="username" name="username"/>
         <br/>
         <label for="password">رمز عبور</label>
         <input type="password" size="20" id="passowrd" name="password"/>
         <br/>
4

5 に答える 5

0

リモート サーバーのdisplay_errorsオプションがオンになっており、error_reportingオプションが include に設定されていますE_NOTICE

簡単な解決策は、に設定display_errorsすることです0

適切な解決策は、サーバーの設定をローカル マシンに複製し、通知を修正することです。

于 2013-07-11T15:26:21.187 に答える
0

スーパーグローバル アレイに$_POSTユーザー名とパスワードが設定されていない可能性があります。この問題を解決するには、次のように設定されているかどうかを確認できますisset()

if(isset($_POST['submit']))
{

//code block

}

エラー報告を有効にすると、スクリプトの何が問題なのかを見つけるのに役立ちます。これを行うには、これをスクリプトの先頭に追加します。

ini_set('display_errors',1); 
error_reporting(E_ALL);

これをグローバルに設定するには、php.iniファイルを編集してerror_reportingディレクティブを次のように変更します。

error_reporting = E_ALL

headers already sentエラー メッセージは通常、の<?php前後の空白が原因?>です。詳細な説明と役立つヒントについては、この StackOverflow の回答を参照してください。

お役に立てれば!

于 2013-07-11T15:27:34.060 に答える
0

一方のサーバーではdisplay_errorsをオフにし、もう一方のサーバーではオンにしています。問題は両方のサーバーで引き続き発生しますが、一方では通知されません。

問題は、それらを使用しようとする前に、定義されていない変数または配列の一部にアクセスしていることです。

于 2013-07-11T15:24:01.433 に答える
0

$_POST['username'];PHP ネイティブ ポスト スーパー グローバル変数を使用した codeigniters 入力クラスを使用$this->input->post('username')して、この問題が解決するかどうかを確認することもできます。

于 2013-07-12T12:13:49.060 に答える