OpenID и Iframes - PullRequest
       20

OpenID и Iframes

8 голосов
/ 03 мая 2010

У меня небольшие проблемы с работой OpenID изнутри iframe.

В основном у меня загружен какой-то тяжеловесный контент на главной странице, и я хочу создать систему регистрации в системе, где не нужно перезагружать страницу (и, таким образом, снова загружать весь этот контент). Я влюбился в OpenID из-за использования веб-сайтов обмена стека и относительно хорошо интегрировал его в другие проекты.

Я чувствую, что хочу делать то, что хочу, я хотел бы попробовать и использовать iframe (потому что новые окна заставляют меня плакать), однако я наткнулся на какое-то препятствие где-то рядом с серединой, и для жизни я могу не понимаю, что происходит ...

в основном у меня есть форма в сгенерированной jQuery форме DIV и openID, которая, кажется, работает для динамической загрузки iframe. что-то вроде этого:

<script type="text/javascript">
contentboxs = 0;
function contentbox() {
      if (contentboxs == 0){
        $('#mainpage').append("<div id='contentbox'><div style='clear:both;' id='oritext'></div><div id='f_content'><iframe src ='' name='framedcontent' width='580' height='600' scrolling='false'></iframe></div></div>");
        $('#f_content').hide();
        contentboxs++;
      } else {
        $('#contentbox-wipe').remove();
        $('#contentbox').remove();
        contentboxs--;
      }
    }

function loginpanel(){
      contentbox();
      if (contentboxs == 1){
          $('#oritext').append("<form method='post' action='login.php' name='oidform' target='framedcontent'>Please Select your OpenID Provider: <br/><input type='text' name=\"id\" id='openidbox' /><br /><input type='submit' name='submit' value='Log In' onclick='loginsubmit();' ></form>");
      } 
    }
function loginsubmit() {
    $('#oritext').html('');
    $('#contentbox').animate({'height':'600px', 'width':'700px', 'margin-top' : '-300px', 'margin-left' : '-350px'},500, 'linear', function() { $('#f_content').show(); });

}
</script>
<a href='javascript:loginpanel();'>login</a>

и, насколько я могу судить, все прекрасно работает.

моя проблема связана с моим перенаправлением на удаленные сайты openID (снова делаю это с JS по следующим направлениям:)

echo("<div><p><center>Redirecting...</center></div>");

  echo "<script type='text/javascript'>

  function delayer() {

this.location = '".$url."'

}

setTimeout('delayer()', 3000)

</script>";

извините, это немного затянуто, но вот моя проблема (наконец-то): это отлично работает для некоторых сайтов OID, которые я пробовал, но некоторые из них вызывают у меня проблемы: Google вообще не загружается, Yahoo и mySpace открываются нормально в iframe, затем мгновенно перенаправляют полное окно на домашнюю страницу и страницу OID соответственно, и WordPress возвращает ошибку.

Я предполагаю, что это контрмера, введенная в действие, чтобы помешать мне украсть данные для входа (это не то, чего я пытаюсь достичь, и, следовательно, преамбула), и это достаточно справедливо, но все еще чертовски обостряет 1017 *

есть ли здесь что-то, что я делаю отсталым, есть ли способ обойти это, и если ни один из вышеперечисленных, это мои единственные другие варианты для создания новых окон или создания моего собственного логина / регистрации.

Если вы зашли так далеко, большое спасибо за потраченное время, и я надеюсь, что вы не возражали против орфографических ошибок.

1 Ответ

6 голосов
/ 04 мая 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...