2017-10-08 12 views
-4

データベースをAndroidアプリケーションに統合するために、オンラインのWebホスティングプラットフォームで設定した2つのPHPファイルがあります。 register.phpコードが正しく実行されているかどうかをテストするためにURL:https://wounding-pat.000webhostapp.com/register.phpを実行すると、ブラウザに次のメッセージが表示されます。オンラインWebホスティングでPHPを実行する際にエラーが発生しました

接続に成功

お知らせ:未定義のインデックス:名前/storage/ssd2/158/3185158/public_html/register.phpでライン上の5

お知らせ:未定義のインデックス:Eメール/ストレージ/ SSD2で/ 3185158分の158/public_htmlの/ register.phpライン上の6

お知らせ:未定義のインデックス:不定インデックス:件名7

通知に/storage/ssd2/158/3185158/public_html/register.phpでパスワードin/storage/ssd2/158/3185158/public_html/registe未定義のインデックス:行に/storage/ssd2/158/3185158/public_html/register.phpでカウンセラー9

注意:未定義の変数:/ストレージ/ SSD2に接続/配線8

通知にr.phpライン上の3185158分の158/public_htmlの/ register.php 13

警告:mysqli_query()は、パラメータ1は、空行に/storage/ssd2/158/3185158/public_html/register.phpで与えられ、mysqliのことを期待13

エラー

以下は私のinit.php cです頌歌

<?php 

$host = "localhost"; 
$database = "id3185158_csetestonlinedb"; 
$username = "id3185158_root"; 
$password = "admin"; 

//$con = mysqli_connect($host, $username, $password, $database); 

if (mysqli_connect($host, $username, $password, $database)) { 

    echo "Connection Successful"; 

} else { 

    echo "Connection Unsuccessful"; 

} 

?>

私register.phpコードされ、次の

<?php 

require "init.php"; 

$name = $_POST["name"]; 
$email = $_POST["email"]; 
$password = $_POST["password"]; 
$subject = $_POST["subject"]; 
$counsellor = $_POST["counsellor"]; 

$sql_query = "insert into teachers values('$name', '$email', '$password', '$subject', '$counsellor');"; 

if (mysqli_query($connection, $sql_query)) { 

    echo " Data Inserted"; 

} else { 

    echo " Error"; 

} 

?>

+2

エラー報告を有効にしてローカル開発環境で開発する必要があります。 init.phpは、register.phpで使用しようとしている$接続変数を作成しません。レジスタにアクセスすることはできません。ポストリクエスト(フォームデータ)を期待しているので、エラーを出すことなくPHPに直接アクセスできます。あなたは準備された、パラメータ化されたクエリを使用する必要があります。atmでは、SQLインジェクションハックを公開しています。 – JimL

+3

そのコードはSQLインジェクションには全面的にopen_です。あなたはそれを修正する必要があります! SQLクエリを設定するときに、「パラメータのバインド」と組み合わせて「プリペアドステートメント」を使用することの利点について説明します。 – arkascha

+1

手元にある問題について:http投稿リクエストを実行してもよろしいですか?もしそうなら、 '$ _POST'のダンプは内容として明らかになるでしょうか? – arkascha

答えて

0
  1. あなたは、ブラウザのアドレスバーに直接URLをヒットしている場合は、そのコードが機能しないGETメソッドになります。このURLにPOSTメソッドリクエストを作成するには、郵便配達員のようなツールを試してください。電子メール、パスワード、件名、カウンセラーなどの必要なパラメータが必要です。
  2. あなたregister.phpファイルに名前$接続で定義された変数はありませんが、http://php.net/manual/en/function.mysqli-connect.php機能を使用すると、$接続に設定しなければならない変数を返します。
0

ブラウザでURLを実行すると、投稿から変数を取得しているため、間違いなくエラーが表示されます。これは、ポストを介して取得しているすべてのパラメータを登録ファイルに送るポストリクエストを送信する場合にのみ機能します。

また値が来ているときにも、あなたのINSERTクエリを実行すること

If (isset($_POST[`name`])) { 
$name=$_POST['name' ] ; 
} 

ようISSETを使用するようにしてください。

関連する問題