2016-09-09 4 views
-1

Я унаследовал этот сайт в своей работе и написан на php5, html4 и javascript. То, как они проходят переменные с одной страницы на другую, как это:PHP pass variable через имя местоположения

filename.php?variable=value&secondvariable=secondvalue 

Так при подаче формы я видел

<form method="post" name="auth" action="login.php?logon=logon"> 

, а затем в login.php$logon используется сразу же без использования $_POST.

В настоящее время я обновляю все, и прямо сейчас у меня есть работающий php7.0. Этот метод передачи переменных больше не работает. Поскольку так сложно говорить, что это делает, я не смог найти пример этого онлайн. Поэтому я не знаю, почему он работал раньше, и я не могу понять, почему это не работает сейчас. Кажется, что все используют SESSION переменные или Переменные GLOBAL, но из-за многих способов использования этого формата в коде его невозможно заменить в каждом случае.

Любая информация об этом будет оценена.

EDIT: Это буквально первые строки login.php. $ Входа в систему не в «global_vars.php»

<?php 
define('direct_access', 1); 
include("includes/users.php"); 
include("includes/global_vars.php"); 
include("includes/global_functions.php"); 

if ($logon == "logon"){ 
+0

http://php.net/manual/en/ini.core.php#ini.register-globals возможно ... – AbraCadaver

+1

Пожалуйста, покажите часть своего php-кода –

+1

oh boy, унаследованный код, запустите, пока вы все еще можете ! – Neat

ответ

1

Использовать функцию () для импорта переменных в текущую таблицу символов из массива.

extract($_POST); 
extract($_GET); 

Документация: http://nl3.php.net/manual/en/function.extract.php

+0

Это сработало! Спасибо! Я до сих пор не знаю, почему работал старый способ, но добавив их в строки, чтобы login.php сделал именно то, что мне нужно. – khm

0

Может быть, я, глядя на это слишком simplisticly, но вы можете не пройти метод, с помощью POST вместо ..

<form method="post" name="auth" action="login.php"> 
<input type="hidden" name="logon" value="logon"> 

затем в логине. PHP

$logon = $_POST['logon']; 

в качестве альтернативы, использование в login.php из ..

$logon = $_GET['logon']; 

должен все еще работать

+0

small typo - value = "logon", в противном случае хорошо –

+0

Это работа, которую я использовал в нескольких случаях, но она не может использоваться во всех случаях и не затрагивает основную проблему. – khm

+0

$ _GET ['var'] должен извлекать любые URL-адреса из URL-адреса, поэтому было бы интересно узнать, почему это проблема для вас (например, возможно?). –

1

Rewrite, как это для отладки и отображения значений всех переменных:

if (!empty($_POST)) { // this line was previously if ($logon === "logon"){ 
    // only reaches here on a post request, i.e. form is submitted 

    die(print_r($_REQUEST)); // will show all $_POST, $_GET, and $_COOKIE values that currently are set ---> see http://php.net/manual/en/reserved.variables.request.php 


} 

После подтверждения ключа "входа" на самом деле присутствует, см если он присутствует в массиве $ _GET или $ _POST, изменив значение $ _REQUEST выше (в выражении die()) на $ _GET или $ _POST.

Это может дать вам понять, что происходит.

+0

Это также очень полезно для будущей отладки. Спасибо. – khm

+0

Конечно, рад, что я мог бы помочь. –