Hallo zusammen,
Bei diesem Code bekomme ich als $response->message
Das hier allerdings ist abgekapselt von meinem MVC und funktioniert komischerweise:
Ich sehe einfach keinen Fehler und verstehe nicht, weshalb er mir diesen Fehler ausspuckt...
Viele Grüße
Danny.
Bei diesem Code bekomme ich als $response->message
return_to does not match return URL. Expected http://localhost/gse/signin/complete, got http://localhost/gse/signin/complete...33%3A43Z0nMJGb
PHP-Code:
<?php
require_once $GLOBALS[ 'config' ][ 'openid_path' ] . '/Consumer.php';
require_once $GLOBALS[ 'config' ][ 'openid_path' ] . '/FileStore.php';
require_once $GLOBALS[ 'config' ][ 'openid_path' ] . '/SReg.php';
class signin_controller extends controller
{
private $consumer;
public function __construct( request $request, response $response )
{
$store = new Auth_OpenID_FileStore( rtrim( BASE_PATH, '/' ) . '/.oid_store' );
$this->consumer = new Auth_OpenID_Consumer( $store );
parent::__construct( $request, $response );
}
public function main()
{
if ( isset( $_SESSION[ 'openid_auth' ] ) && $_SESSION[ 'openid_auth' ] !== false )
{
header( 'Location: ' . rtrim( BASE_URL, '/' ) . '/' );
}
$view = new html_view( $this->get_request() );
if ( isset( $_POST[ 'identity' ] ) )
{
if ( empty( $_POST[ 'identity' ] ) )
{
$view->assign( 'err', $GLOBALS[ 'webstring' ]->get( 'Please enter a valid OpenID' ) );
}
else
{
if ( !( $auth = $this->consumer->begin( trim( $_POST[ 'identity' ] ) ) ) )
{
$view->assign( 'err', $GLOBALS[ 'webstring' ]->get( 'Please enter a valid OpenID' ) );
}
else
{
if ( ( $sreg = Auth_OpenID_SRegRequest::build( array( 'email' ), array( 'fullname', 'nickname', 'language' ) ) ) )
{
$auth->addExtension( $sreg );
}
if ( !empty( $_POST[ 'linkback' ] ) && strpos( $_POST[ 'linkback' ], 'signin' ) === false )
{
$_SESSION[ 'linkback' ] = $_POST[ 'linkback' ];
}
if ( $auth->shouldSendRedirect() )
{
$url = $auth->redirectURL( $this->get_trustroot(), $this->get_returnto() );
if ( Auth_OpenID::isFailure( $url ) )
{
$view->assign( 'err', $GLOBALS[ 'webstring' ]->get( $url->message ) );
}
else
{
header( 'Location: ' . $url );
}
}
else
{
$form_id = 'openid_message';
$form_html = $auth->htmlMarkup(
$this->get_trustroot(),
$this->get_returnto(),
false,
array( 'id' => $form_id )
);
if ( Auth_OpenID::isFailure( $form_html ) )
{
$view->assign( 'err', $GLOBALS[ 'webstring' ]->get( $form_html->message ) );
}
else
{
print $form_html;
}
}
}
}
}
$html = $view->display( 'signin.tpl' );
$this->base_view->assign( 'content', $html );
$this->get_response()->set_body( $this->base_view->display( 'www_base.tpl' ) );
}
public function complete()
{
$response = $this->consumer->complete( $this->get_returnto() );
if ( $response->status == Auth_OpenID_SUCCESS )
{
$_SESSION[ 'openid_auth' ] = true;
$sreg = new Auth_OpenID_SRegResponse();
$obj = $sreg->fromSuccessResponse( $response );
$data = $obj->contents();
if ( !$this->model->check_user_exists( $data[ 'email' ] ) )
{
$this->model->insert_user( $data );
}
$this->model->do_user_updates( $data );
if ( @$data[ 'language' ] )
{
$_SESSION[ 'user' ]->set_language( $data[ 'language' ] );
}
}
$linkback = 'http://' . $_SERVER[ 'HTTP_HOST' ] . '/' . trim( BASE_URL, '/' );
if ( isset( $_SESSION[ 'linkback' ] ) && !empty( $_SESSION[ 'linkback' ] ) )
{
$linkback = $_SESSION[ 'linkback' ];
unset( $_SESSION[ 'linkback' ] );
}
if ( ( isset( $_SESSION[ 'openid_auth' ] ) && $_SESSION[ 'openid_auth' ] !== false ) || $response->status == Auth_OpenID_CANCEL )
{
header( 'Location: ' . $linkback );
}
$view = new html_view( $this->get_request() );
$view->assign( 'err', $GLOBALS[ 'webstring' ]->get( $response->message ) );
$html = $view->display( 'signin.tpl' );
$this->base_view->assign( 'content', $html );
$this->get_response()->set_body( $this->base_view->display( 'www_base.tpl' ) );
}
private function get_scheme()
{
$scheme = 'http';
if ( isset( $_SERVER[ 'HTTPS' ] ) && $_SERVER[ 'HTTPS' ] == 'on' )
{
$scheme .= 's';
}
return $scheme;
}
private function get_trustroot()
{
return sprintf(
'%s://%s:%s%s/',
$this->get_scheme(),
$_SERVER[ 'SERVER_NAME' ],
$_SERVER[ 'SERVER_PORT' ],
rtrim( BASE_URL, '/' )
);
}
private function get_returnto()
{
return sprintf( '%s/signin/complete', rtrim( $this->get_trustroot(), '/' ) );
}
}
PHP-Code:
/**/
// complete.php
/**/
<?php
require_once 'Auth_OpenID/OpenID/Consumer.php';
require_once 'Auth_OpenID/OpenID/FileStore.php';
require_once 'Auth_OpenID/OpenID/SReg.php';
$store = new Auth_OpenID_FileStore( './oid_store' );
$consumer = new Auth_OpenID_Consumer( $store );
$response = $consumer->complete( 'http://localhost/complete.php' );
if ( $response->status == Auth_OpenID_SUCCESS )
{
$_SESSION[ 'openid_auth' ] = true;
$sreg = new Auth_OpenID_SRegResponse();
$obj = $sreg->fromSuccessResponse( $response );
$data = $obj->contents();
var_dump( $data );
}
else echo $response->message;
?>
/**/
// index.php
/**/
<?php
require_once 'Auth_OpenID/OpenID/Consumer.php';
require_once 'Auth_OpenID/OpenID/FileStore.php';
require_once 'Auth_OpenID/OpenID/SReg.php';
if ( isset( $_POST[ 'identity' ] ) )
{
$store = new Auth_OpenID_FileStore( './oid_store' );
$consumer = new Auth_OpenID_Consumer( $store );
if ( empty( $_POST[ 'identity' ] ) ) $err = 'Please enter a valid OpenID';
else
{
if ( !( $auth = $consumer->begin( trim( $_POST[ 'identity' ] ) ) ) ) $err = 'Please enter a valid OpenID';
else
{
if ( ( $sreg = Auth_OpenID_SRegRequest::build( array( 'email' ), array( 'fullname', 'nickname', 'language' ) ) ) )
$auth->addExtension( $sreg );
$url = $auth->redirectURL( 'http://localhost/', 'http://localhost/complete.php' );
header( 'Location: ' . $url );
}
}
}
?>
<?php if ( isset( $err ) ): ?>
<div><?=$err?></div>
<?php endif; ?>
<form method="post">
<label for="signin-identity-b">OpenID Identity:</label><br />
<input type="text" name="identity" id="signin-identity-b" />
<input type="submit" name="signin" value="Sign in" />
</form>
Viele Grüße
Danny.

Kommentar