2017-06-30 5 views
1

サードパーティのログイン用ログインフォームを開発中です(例:login.php)。私はPHPが全く新しいです。私は、サードパーティからの当社のウェブサイトに来てデータ保存する必要があるので、私はPHP内部の非表示フィールドにそれらのデータを保存し、login.phpにログインフォームを送信している間、私は私のStrutsアクションでフォームデータを取得することができていますJSP/struts1.xアクションからフォームデータをPHPに渡します

request.getParameter("data"); 

彼/彼女が成功した私は元気ですログインしている場合、私のlogin.php

<form id="externalloginform" name="externalloginform" action="/login.do" method="POST"> 
<input id="username" type="text" name="userid"/> 
<input id="password" type="password" name="password"/> 
<input id="data" type="hidden" name="data"/> 
</form> 

以下のように見えます。しかし、ログイン失敗の場合、同じ login.phpにリダイレクトする必要があります。エラーメッセージが表示され、アクションクラスの保存されたフォームデータが login.phpになります。私は私がJSPに getとしてフォームメソッドを設定している間、私は login.phpで、この隠しフィールドを取得することができ、以下のように私たちのポータル内のjspに

<body onload="document.getElementById('custom-login-form').submit();"> 
<form id="custom-login-form" name ="custom-login-form" action="/login.php" method ="post"> 
<input type="hidden" name="loginerr" value="request.getAttribute("loginerr")" /> 
<input type="hidden" name="data" value="request.getAttribute("data")" /> 
</form> 

このアクションメソッドを転送し、

request.setAttribute("loginerr",loginerr); 
request.setAttribute("data",data); 

を設定しています使用して、

$_GET['loginerr']; 
$_GET['data']; 

が、JSPでpost方法の場合には、私はエラー

を取得しています

未定義のインデックス:login.phpでloginerr

。私は両方を使用しました

$_POST['loginerr']; & $_REQUEST['loginerr']; 
$_POST['data']; & $_REQUEST['data']; 

助けが必要ですか?私は真剣にこれを行うために一日中座っています。投票しないでください。 Googleをたくさん検索して解決策を見つけることができませんでした。あなたは、単にチェックするだけで$_REQUESThttp://php.net/manual/en/reserved.variables.request.php
使用isset()を使用することができます

答えて

0

インデックスがアクセスしようとする前に、存在する場合:dataが見つからなかった場合はhttp://php.net/manual/en/function.isset.php

$data = isset($_REQUEST['data']) ? $_REQUEST['data'] : null; 
$error = isset($_REQUEST['loginerr']) ? $_REQUEST['loginerr'] : null; 

、それはnullになります。同じことが$errorになります。

あなたはPHP 7.0以降を使用している場合は、(それは、ほんの少しのクリーナー上記のスニペットと同じことです)の代わりに、短い手??を使用することができます。

$data = $_REQUEST['data'] ?? null; 
$error = $_REQUEST['loginerr'] ?? null; 
+0

感謝を!!。私の理解は、phpで使用する前に設定されているかどうかをチェックしてほしいということです。定義されていないエラーを防ぐ。しかし、私の質問は、データが "post"メソッドのjspからphpに来ない理由ですが、同じことが "get"の場合に来ています。私が避けたい "get"メソッドの場合、データはURLに明示的に表示されます。 – user8235599

+0

@ user8235599私が見る限り、あなたのコードはフォームを投稿する必要があります。しかし、 'value =" request.getAttribute( "data") "は間違っています。 'value =" <%= request.getAttribute( "data")%> "' JSPで実際にリクエストデータをエコーアウトする必要はありませんか? 'request.getAttribute(" data ")' –

+0

@ user8235599そして、キーを使用しようとする前に、キーが設定されているかどうかを常にチェックし、それに応じてそれを処理する必要があります。 –

関連する問題