2014-02-06 2 views
1

Простой вопрос на самом деле, но, вероятно, мне не хватает действительно простой точки.Раздел процесса ввода URL

У меня есть форма ввода, чтобы пользователь вставлял URL-адрес для перехода к следующему разделу.

Say пользователь входит в систему: https://www.facebook.com/connect/login_success.html#access_token=XXXXXXXXXYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZAAAAAAAAAAAAAAAAAABBBBBBBBBBBB&expires_in=0

Я хочу форму только обрабатывать: XXXXXXXXXYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZAAAAAAAAAAAAAAAAAABBBBBBBBBBBB

Так будет полностью игнорировать:

https://www.facebook.com/connect/login_success.html#access_token= 

и

&expires_in=0 

Это вообще возможно?

Моя форма невероятно проста:

<form action="home.php" method="GET"> 
        <div class="form-group"> 
         <label for="exampleInputEmail1">Access Token.</label> 
         <input type="text" class="form-control" id="exampleInputEmail1" name="accesstoken"/> 
        </div> 
        <button type="submit" class="btn btn-default btn-block">Confirm</button> 
       </form> 

"Bootstrap"

Спасибо!

+0

процесса URL-адрес на сервере. Кроме того, не отправляйте формы с 'GET', используйте' POST' –

+0

@JoshuaBrodie, что вы имеете в виду? и я буду использовать это в будущем, спасибо! –

+0

URL должен быть как 'login_success.html? Access_token = XYZAB & expires_in = 0', чтобы он распознавался' GET' (обратите внимание, что символ хэша заменен вопросительным знаком), если вы не можете сделать это таким образом, вы можете сохранить URL-адрес в переменную и использовать строчную функцию для замены '#' на '?' –

ответ

0

я нашел более простое решение моей проблемы:

<script> 
$(document).ready(function() { 
    $('#btnSubmit').click(function(e) { 
     var val = document.getElementById('exampleInputEmail1').value; 
     $('#exampleInputEmail1').val(val.substring(val.indexOf("=") + 1, val.indexOf('&'))); 
    }); 
}); 
</script> 
0

Изменение формы с помощью POST, например:

<form action="home.php" method="POST"> 
    <div class="form-group"> 
     <label for="exampleInputEmail1">Access Token.</label> 
     <input type="text" class="form-control" id="exampleInputEmail1" name="accesstoken"/> 
    </div> 
    <button type="submit" class="btn btn-default btn-block">Confirm</button> 
</form> 

Затем, вы можете получить переменную в PHP, как это:

<?php $accesstoken = $_GET['accesstoken']; ?> 

, который может быть легко echo «эд в Переменная JavaScript для вашего использования.

+0

Спасибо, форма была обновлена, как бы я реализовал раздел PHP, о котором вы упомянули, и будет ли он обрабатывать только токен доступа? –

+0

@Billy: 'login_success.html # access_token ='. Его не .html? Access_token! –

0

Сначала я предлагаю вам разобрать его на стороне сервера, а не на стороне клиента (JavaScript можно отключить и т. Д.). Если вам нужно указать accesstoken как параметр GET на home.php, вы можете перенаправить пользователя здесь после отправки. Во всяком случае, на стороне сервера, попробуйте его с parse_url:

$urlParts = parse_url($_POST['accesstoken']); // Now you have all URL parts in array 
$urlQuery = $urlParts['query']; // Now you have only query part 
$queryParts = explode('&', $urlQuery); // Separate them 

foreach ($queryParts as $query) 
{ 
    $singleQueryPart = explode('=', $query); // Separate key from value 

    if ($singleQueryPart[0] == 'access_token') // If the key is same as we are looking for... 
    { 
     $token = $singleQueryPart[1]; // ...assign value and break loop 
     break; 
    } 
} 

echo $token; 

Примечание 1: Я предполагаю, что ваш URL в первом посте имеет тип (# вместо ?). Если нет, просто используйте тот же скрипт, что и я, но измените $urlParts['query'] на $urlParts['fragment'].

ПРИМЕЧАНИЕ 2: Если вы действительно хотите/нуждаетесь в использовании JavaScript, посмотрите на php.js implementation of parse_url.

ПРИМЕЧАНИЕ 3: Еще одна хорошая библиотека JS для обработки операций с URL-адресами, по-видимому, URI.js.

+0

Его 'login_success.html # access_token =' Не '? Access_token' –

+0

Проверить ** ПРИМЕЧАНИЕ 1 ** –

+0

Я попытался использовать это сейчас и до сих пор не повезло, я пропустил что-то невероятно очевидное здесь? –

Смежные вопросы