У меня есть HTML-страница с некоторыми кнопками, одна из моих кнопок выглядят следующим образом:Переменная urlencoded PHP не определена?
<input class="contentLink" type="button" value="Questionnaire" onclick="validate(<?php urlencode('/my-site/Tools/Learning_Strategies/Questionnaire.php'); ?>)"/>
По существу, когда эта кнопка нажата, она проходит urlencoded-строковый литерал «/ мой сайт/Инструменты/Learning_Strategies/Questionnaire.php»в яваскрипта метод проверки:
function validate(url){
alert(url);
location.href="/my-site/Session/redirectMe.php?loc="+url;
}
То, что я пытаюсь сделать, это получить„/my-site/Session/Questionnaire.php“из HTML-страницы, доступной из redirectMe.php. Это является установка в
location.href="/my-site/Session/redirectMe.php?loc="+url;
, который ведет к моему redirectMe.php файла:
<?php
require "SessionAuthenticator.php";
Session_start();
if(validateSession()===true){//validateSession() is defined inside SessionAuthenticator.php
echo $_GET["loc"];
//header("Location: ".$_GET["loc"]);
}else{
header("Location: /my-site/LoginPage/index.php");
}
?>
Проблема заключается во обоих чеку и эхо, кодированный строковый литерал вышел как «неопределенные» , что означает следующую строку:
header("Location: ".$_GET["loc"]);
будет действительно выглядеть следующим образом:
header("Location: undefined");
И поэтому ищите «неопределенный» в текущем каталоге и разбивайте веб-сайт.
Это все работает отлично, если нет кодирования следующим образом:
<input class="contentLink" type="button" value="Questionnaire" onclick="validate('/my-site/Tools/Learning_Strategies/Questionnaire.php')"/>
Но ... Нет кодирования не плохо да?
Если вы задаетесь вопросом, почему вы не видите метод декодирования используется ...
Веб-сервер организует $ _GET были urldecoded раз уже к тому времени он достигает вас! - Мэтт Джонсон ¶ @http://php.net/manual/en/function.urldecode.php#48481
Требовать и включают в себя не будет работать, так как redirectMe.php будет выполняться до того, как пользователь видит даже на этой странице. Это должно произойти только тогда, когда пользователь нажимает кнопку. Вот почему я использую функцию javascript для запуска redirectMe.php.
Я пробовал ajax, однако это не сработало. Поговорив с опытным программистом, которого я знаю лично, мне сказали, что аякс не может мне помочь. Это связано с тем, что Ajax будет перенаправлен на «/my-site/Tools/Learning_Strategies/Questionnaire.php», но не на клиента (пользователя).
Чтобы четко на мой вопрос:
Почему urlencoded придумать, как «не определено», когда эхо-эд/начеку-е изд? Как это исправить?
Что касается программ/веб-серверов/и т.д. Я использую ...
Sublime 3 (текстовый редактор)
Wamp (64bit) (все-в-одном пакете) @http://www.wampserver.com/en/
Apache 2.4.17
PHP 7
MySQL 5.7.9
Я открыт для других способов получить то, что я пытаюсь сделать сделать.
Однако я не открыт для изменения веб-серверов/программ и т. Д. (За исключением возвышенного 3, поскольку это просто текстовый редактор ... но зачем это нужно требовать?).
Кроме того, любые способы достижения этого должны поддерживать браузеры/платформы, как указано ниже.
Сайт должен поддерживать:
(браузеры)
IE 8 и выше, и последние версии Microsoft Edge, Firefox, Chrome и Safari.
Cross-Platform:
для Windows 7 и выше, а также последние версии Mac OS, IOS и Android
Вы можете представить пример с помощью json_encode? Я получаю «Неожиданный токен» в инструменте разработчика Chrome с помощью onclick = «validate ( Php echo json_encode (urlencode ('/ my-site/Tools/Learning_Strategies/Questionnaire.php'));?>)" – Tyler
@Tyler - Правильный PHP. Я не вижу никаких '' 'в нем, и я не вижу нигде' '' в любом из кода в вопросе, который бы выбрал эту ошибку. Инструменты разработчика дадут вам номер строки, в которой произошла ошибка. Нажмите здесь. – Quentin
Разработчик указывает на тег ввода с кодом onclick. Это также кажется мне странным, поскольку в файле php (html-страница) и с большим количеством эхо-тестирования не существует никаких} в URL-адресе, до и после кодирования ... Ну откладывая это; после разговора с другими людьми в другом месте, я узнал, что мне не нужно кодировать URL-адрес, потому что я полностью контролирую URL-адрес. На него не влияет пользовательский ввод или что-то еще. Упрощение кнопки - вы нажимаете на нее, и вы переходите на другую страницу. – Tyler