私はこのコードを 16 時間近く使用してきましたが、結果はまだまったく意味がありません。
私がやっていることは、POST パラメーターを URL に送信する Java プログラムを作成することです。また、Firefox でフォームを使用して同じ方法をテストしています。
問題は、Firefox で、送信されている値をテストしてエコーアウトすることです。また、等しいはずであることがわかっている値に対して値をテストしますが、Java が値を送信すると false を返しますが、Firefox は true を返します。これはなぜですか?
PHP コード:
$player = array('code' => "code");
$msg = "neither";
if(isset($_POST['player']))
{
$player = getPlayer(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME, DB_TABLE_NAME, $_POST['player']);
$msg = "?player=" . $_POST['player'] . " post";
}
function getPlayer($DbHost, $DbUsername, $DbPassword, $DbName, $DbTableName, $name)
{
try
{
$dsn = "mysql:host=$DbHost;dbname=$DbName"; //Data Source Name = MySQL
$dbc = new PDO($dsn, $DbUsername, $DbPassword); //Connect to DB
$query = "SELECT * FROM $DbTableName WHERE name = :name";
$result = $dbc->prepare($query); //Prepare query
if($name == "pathurs")
{
echo 'true:' . $name;
}
else
{
echo 'false:' . $name;
}
$result->bindParam(':name', $name, PDO::PARAM_STR);
$result->execute(); //Execute Query
while($row = $result->fetchObject()) //Loop through results
{
$array = array();
//Convert stdClass($row) to array($array)
foreach($row as $key => $value)
{
$array[$key] = $value;
}
$dbc = null;
return $array;
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
echo "code:" . $player['code'] . $msg . $_POST['player'];
Java コード:
public String getContent(String url, String params)
{
String result = "";
try
{
this.url = new URL(url);
try
{
URLConnection con = this.url.openConnection();
con.setDoOutput(true);
PrintStream ps = new PrintStream(con.getOutputStream());
ps.println(params);
InputStream is = con.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
String line = "";
while((line = in.readLine()) != null)
{
result += line;
}
System.out.println(result);
}
catch(IOException e)
{
e.printStackTrace();
}
}
catch(MalformedURLException e)
{
e.printStackTrace();
}
return result;
}
Firefox の出力:
true:pathurscode:code?player=pathurs postpathurs
Java プログラム出力:
false:pathurscode:?player=pathurs postpathurs
(20 行目の PHP コードで)比較すると$name == "pathurs"
、Firefox では true になるのに、Java では false になるのはなぜですか? 両方ともPHPページでテストされ、両方とも文字列であり、両方が次の形式に等しいことをエコーで出力するのを見るのは意味がありません'pathurs'
私が何か間違ったことはありますか?Java が情報を送信するときにのみ発生し、Firefox が送信するときに発生しない理由は、現在のところわかりません。PDOクエリを次のように置き換えてテストしました:
$query = "SELECT * FROM $DbTableName WHERE name = 'pathurs'";
両方の出力で完全に機能します。これは私をさらに混乱させます。誰かが助けてくれることを願っています!
前もって感謝します!