私は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;
}
?>
MD5は***ではありません*** "暗号化"; *ハッシュ*です。パスワードを保護することはまったく不適切です。 bcryptのような*現代的な安全なハッシュ*を使用してください。これは、PHPが '' password_hash''(http://php.net/password_hash)で構築された形で最適です。 – deceze
そして、mysqlを使用しないでください。ひどい悪質で危険な、推奨されないものです。 – DevDonkey
'$ myconn = mysql_connect(localhost、root、password);'定数は 'localhost'、' root'と 'password'はどこにでも定義されていますか? –