2016-04-08 13 views
-1

私はPHPを学ぶために簡単なログインフォームを開発しようとしています。外部PHPファイルの関数を返す

私は、ユーザー名とパスワード(md5暗号化に格納されている)を取得するためのクエリをmysqlデータベースに送信し、ユーザーが挿入したデータでそれを制御する関数を作成しました。

この関数(login())はfun_login.phpという外部ファイルにあり、login.phpページから呼び出すと、fun_login.phpというページが開き、それは戻ってこない私は

<?php 

include "fun_login.php"; 

?> 

login.php

<div class="container"> 
    <div class="row"> 
     <div class="col-sm-2 col-sm-offset-5"> 
      <form action="fun_login.php" role="form" method="post"> 
       <div class="form-group"> 
        <label for="nome">Username:</label> 
        <input type="textarea" class="form-control" id="username" name="username"> 
       </div> 
       <div class="form-group"> 
        <label for="password">Password:</label> 
        <input type="password" class="form-control" id="password" name="password"> 
       </div> 
       <button type="submit" class="btn btn-default" id="submitlogin" name="submitlogin">Log In</button> 
      </form> 
      <?php 
      if(isset($_POST['submitlogin'])) { 
       $control = login($_POST['username'], md5($_POST['password'])); 
      if($control) header("Location: ./index.php"); 
      else header("Location: ./login.php"); 
       } 
      ?> 
     </div> 
    </div> 
</div> 
でファイルfun_login.phpを含めましたlogin.phpで

login.php(戻り値を持ついくつかの問題があるので、私は思います)

fun_login.php

<?php 

function login($username, $password) { 
    $myconn = mysql_connect(localhost, root, password); 
    mysql_select_db('portfolio', $myconn); 
    $query = "SELECT username,password,admin FROM utenti WHERE username = '" . $username . "' AND password = '" .$password . "';"; 
    $result = mysql_query($query, $myconn)or die('Error, insert query failed'); 
     // conto il numero di occorrenze trovate nel db 
$numrows = mysql_num_rows($result); 

// se il database è vuoto lo stampo a video 
if ($numrows == 0) return false; 
// se invece trovo delle occorrenze... 
else return true; 
} 
?> 
+0

MD5は***ではありません*** "暗号化"; *ハッシュ*です。パスワードを保護することはまったく不適切です。 bcryptのような*現代的な安全なハッシュ*を使用してください。これは、PHPが '' password_hash''(http://php.net/password_hash)で構築された形で最適です。 – deceze

+0

そして、mysqlを使用しないでください。ひどい悪質で危険な、推奨されないものです。 – DevDonkey

+2

'$ myconn = mysql_connect(localhost、root、password);'定数は 'localhost'、' root'と 'password'はどこにでも定義されていますか? –

答えて

-2

表示されるエラーメッセージは何ですか? は、あなたのPHPファイルの先頭に次のコマンドを使用します。

// Report all PHP errors 
error_reporting(E_ALL); 

次に、あなたがすべてであれば、発生したエラーを知っているだろう。時

+0

でした。これは答えではありません。一つとして投稿しないでください。これは最高のコメントです。コメントを投稿するには十分な評判がないので、可能な限り、そのようなコメントを完全に控えてください。無回答のために下落していることは、その目標には役立たない。 – deceze

+0

@deceze、私のタフも、しかし、私は彼の評判を見た...彼/彼女はまだコメントすることはできませんので、私たちは彼/彼女を許す必要があります:D –

0

あなたはまだheader('Location:')が動作しません送信されてきたあなたのlogin.phpヘッダーに

<?php 
if(isset($_POST['submitlogin'])) { 
    $control = login($_POST['username'], md5($_POST['password'])); 
if($control) header("Location: ./index.php"); 
else header("Location: ./login.php"); 
    } 
?> 

を呼んでいます。

出力(エコーまたはHTML)が表示される前にそれを配置する必要があります。 あなたはエラーで見ればあなたはおそらくあなたのlogin()コールもその前である必要がありますように、ファイルをレイアウトか何かに含まれていること、それのルックスではWarning: Cannot modify header information - headers already sent by

が表示されますログ。

関連する問題