継続的にエラーが発生していますPHPで未定義のインデックスがログインしているか、アンドロイドアプリからサインアップしようとしています。私はPHPのバージョンを変更しようとしましたが、問題を解決しませんでした。ここで私はerror_logの中で得るエラーは次のとおりです。データベースにデータを挿入または選択中にPHPでエラーが発生しました
[28-Aug-2017 15:15:33 America/Denver] PHP Notice: Undefined index: full_name in /home2/heratarm/public_html/socialnetwork-api/Classes/user.php on line 33
[28-Aug-2017 15:15:33 America/Denver] PHP Notice: Undefined index: username in /home2/heratarm/public_html/socialnetwork-api/Classes/user.php on line 34
[28-Aug-2017 15:15:33 America/Denver] PHP Notice: Undefined index: email in /home2/heratarm/public_html/socialnetwork-api/Classes/user.php on line 35
[28-Aug-2017 15:15:33 America/Denver] PHP Notice: Undefined index: password in /home2/heratarm/public_html/socialnetwork-api/Classes/user.php on line 36
[28-Aug-2017 15:15:57 America/Denver] PHP Notice: Undefined index: username in /home2/heratarm/public_html/socialnetwork-api/Classes/user.php on line 12
[28-Aug-2017 15:15:57 America/Denver] PHP Notice: Undefined index: password in /home2/heratarm/public_html/socialnetwork-api/Classes/user.php on line 13
、ここでは私のPHPコードです:
class user
{
public function login()
{
$data = [];
require $_SERVER['DOCUMENT_ROOT'].'/socialnetwork-api/Config/db.php';
$DB = new DB();$db=$DB->connection;
$username =htmlentities($_POST['username'],ENT_QUOTES,"UTF-8");
$password =htmlentities($_POST['password'],ENT_QUOTES,"UTF-8");
$sql = "SELECT * FROM `tbl_users` WHERE `username`='$username' AND `password`='$password'";
$result = $db->query($sql);
$result = $result->fetch();
if($result != null)
{
$data["result"]=$result['id'];
}
else
{
$data["result"]="0";
}
echo json_encode($data);
}
public function signup()
{
$data = [];
require $_SERVER['DOCUMENT_ROOT'].'/socialnetwork-api/Config/db.php';
$DB = new DB();$db=$DB->connection;
$fullname = htmlentities($_POST['full_name'],ENT_QUOTES,"UTF-8");
$username = htmlentities($_POST['username'],ENT_QUOTES,"UTF-8");
$email = $_POST['email'];
$password = htmlentities($_POST['password'],ENT_QUOTES,"UTF-8");
$sql = "SELECT * FROM `tbl_users` WHERE `username`='$username'";
$result = $db->query($sql);
$result = $result->fetch();
if($result != null)
{
$data["result"] = "username";
}
else
{
$sql = "SELECT * FROM `tbl_users` WHERE `email`='$email'";
$result = $db->query($sql);
$result = $result->fetch();
if($result != null)
{
$data["result"] = "email";
}
else
{
$sql = "INSERT INTO `tbl_users` (`full_name`,`username`,`email`,`password`) VALUES ('$fullname','$username','$email','$password')";
$result = $db->prepare($sql);
$result = $result->execute();
if($result)
{
$data["result"]="1";
}
else
{
$data["result"]="0";
}
}
}
echo json_encode($data);
}
私はそんなにPHPに慣れていないと私は私のためにこれを必要とするので、私は、誰かが私を助け願っています大学でのプロジェクト。
あなたは[SQL Injections](http://php.net/manual/en/security.database.sql-injection.php)を広く利用していますので、[Prepared Statements](http:// php。 net/manual/en/mysqli.quickstart.prepared-statements.php)を実行してください。 'htmlentities()'はデータベースの値をエスケープするのに十分な方法ではありません。 DBに値を保存する前に、htmlentities()を使って値をエスケープしないでください。データを出力する前にhtmlentities()を使うべきです。 –
**パスワードを平文で保存しないでください!**。パスワードハッシュだけを保存してください! PHPの['password_hash()'](http://php.net/manual/en/function.password-hash.php)と['password_verify()'](http://php.net/manual/en /function.password-verify.php)。 5.5よりも低いバージョンのPHPを実行している場合は、[password_compat library](https://github.com/ircmaxell/password_compat)を使用して同じ機能を使用できます。 –
@MagnusEriksson私はPHPバージョン5.6を実行していますが、あなたが言ったことはしますが、私は自分の問題に答えを得ていませんでした。 このエラーが発生する理由を具体的に教えていただけますか? –