Сценарии находятся в одном домене. Область переменных не является проблемой, так как я храню и отображаю данные, полученные либо GET, либо возвращенные из функции SurveyAgent(). Приносим извинения за отказ от кода, который фактически выполняет запрос select. Я не считал это важным, потому что знаю, что SurveyAgent() делает то, что он должен делать, иначе первый скрипт не сможет отобразить имя и фамилию агента в браузере. Тем не менее, в соответствии с просьбой, вот полный код из SurveyAgent():
$userID = $userID; // $userID is passed in by the function call.
$mySQLdatabase = EstablishConnection("database");
// EstablishConnection connects to the server and selects the database provided as an argument. This code is known good, as it is used in multiple PHP scripts on the same domain.
$mySQLselect = "SELECT lname, fname FROM table WHERE id_no='$userID';";
$mySQLquery = mysql_query("$mySQLselect") or die ("This user id does not exist.");
$mySQLrow = mysql_fetch_row($mySQLquery);
$sponsorData = $mySQLrow[1].".".$mySQLrow[0];
return $sponsorData;
Итак, что тело функции SurveyAgent(). Я использовал var_dump в двух разных местах в моем основном скрипте. В первый раз вызывается var_dump, он отображает данные переменных и информацию о них - и это соответствует ожиданиям. Второй раз, когда он называется, переменные все пустые! Я использую скрытый ввод формы с именем «sent» со значением «true», чтобы указать, была ли форма отправлена или нет.
Вот полный код, так как это прямо сейчас:
$agentID = $_GET['agent'];
//$agentID = "000001";
$ipAddress = $_GET['ip_address'];
// Uncomment the following line and comment out the line after when a date is passed via GET.
//$date_generated = $_GET['date_generated'];
$date_generated = date("n/j/Y");
$time_generated = $_GET['time_generated'];
$first_name = $_GET['first_name'];
$last_name = $_GET['last_name'];
$mailing_address = $_GET['address1'];
$mailing_city = $_GET['city'];
$mailing_state = $_GET['state'];
$mailing_postal_code = $_GET['postal_code'];
$mailing_country = "US";
$primary_phone = $_GET['phone_number'];
$email = $_GET['email'];
$dateMassacre = explode("/", $date_generated);
$dateMassacre[0] = preg_replace("/[^\d]/", "", $dateMassacre[0]);
$dateMassacre[1] = preg_replace("/[^\d]/", "", $dateMassacre[1]);
$dateMassacre[2] = preg_replace("/[^\d]/", "", $dateMassacre[2]);
if ($dateMassacre[0] < 10)
{
$dateMassacre[0] = "0".$dateMassacre[0];
}
if ($dateMassacre[1] < 10)
{
$dateMassacre[1] = "0".$dateMassacre[1];
}
$date_generated = $dateMassacre[2]."-".$dateMassacre[0]."-".$dateMassacre[1];
$agentData = SurveyAgent($agentID);
$agentDataArray = explode(".", $agentData);
$agentFirstName = $agentDataArray[0];
$agentLastName = $agentDataArray[1];
$agentFullName = $agentFirstName." ".$agentLastName;
var_dump($agentFirstName, $agentLastName, $agentFullName, $agentID, $agentData, $agentDataArray); // var_dump #1
var_dump($first_name, $last_name, $mailing_address, $mailing_city, $mailing_postal_code, $mailing_state, $primary_phone, $email); // var_dump #2
if (isset($_POST['sent']))
{
var_dump($agentFirstName, $agentLastName, $agentFullName, $agentID, $agentData, $agentDataArray); // var_dump #3
var_dump($first_name, $last_name, $mailing_address, $mailing_city, $mailing_postal_code, $mailing_state, $primary_phone, $email); // var_dump #4
код идет оттуда, чтобы обработать дополнительный вход из формы. Я добавил пару var_dump вызовов, как описано выше, когда я спускаюсь мимо этой точки:
$first_name = $_POST['first_name'];
$firstNameFlag = ValidateFirstName($first_name, false);
$last_name = $_POST['last_name'];
$lastNameFlag = ValidateLastName($last_name, false);
$mailing_address = $_POST['mailing_address'];
$mailingAddressFlag = ValidateAddress($mailing_address, false);
$mailing_city = $_POST['mailing_city'];
$mailingCityFlag = ValidateCity($mailing_city, false);
$mailing_state = $_POST['mailing_state'];
$mailingStateFlag = ValidateState($mailing_state, false);
$mailing_postal_code = $_POST['mailing_postal_code'];
$mailingPostalCodeFlag = ValidatePostalCode($mailing_postal_code, false);
$primary_phone = $_POST['primary_phone'];
$primaryPhoneFlag = ValidateTelephoneAlternate($primary_phone, false);
$email = $_POST['email'];
$validator = new EmailAddressValidator();
if ($validator->check_email_address($email))
{
$email = strtolower($email);
$emailFlag = true;
}
else
{
$emailFlag = false;
}
var_dump($agentFirstName, $agentLastName, $agentFullName, $agentID, $agentData, $agentDataArray); // var_dump #5
var_dump($first_name, $last_name, $mailing_address, $mailing_city, $mailing_postal_code, $mailing_state, $primary_phone, $email); // var_dump #6
Выход var_dump # 1 перед отправкой формы: строка (7) «Клеман» строка (5) " Смит "(13)" Clement Smith "string (6)" 000002 "string (13)" Clement.Smith "array (2) {[0] => строка (7)" Clement "[1] => строка (5) «Смит»}
Результат var_dump # 2 перед отправкой формы: строка (6) строка «Норрин» (4) строка «Radd» (19) «строка 1234 S. Shepherd Rd» (9)) Строка «Городское имя» (5) «12345» строка (2) строка «WI» (10) «1234567890» строка (24) «[email protected]»
Результат var_dump # 1, # 3 и # 5 после отправки формы: string (0) "" string (0) "" string (1) "" NULL string (1) "." array (0) "" [1] => string (0) ""}
Вывод var_dump # 2 и # NULL, NULL, NULL, NULL, NULL,
выход var_dump # 6 после отправки формы: строку (6) "Норрин" строка (4) "Радд" строка (19) "1234 С. Шеперд Rd" строка (9) Строка «Городское имя» (5) «12345» строка (2) строка «WI» (10) «1234567890» строка (24) «[email protected]ter.net»
Мне интересно, что переменные в четном пронумерованные вызовы var_dump теряют свои данные после отправки формы, пока я не заново импортировал данные из POST. Еще один интересный факт: если я использую эту прокомментированную строку «// $ agentID =« 000001 »; (и закомментируйте строку GET сразу над ней), тогда переменные в нечетных нумерованных вызовах var_dump никогда не теряют свои данные. Кроме того, я не уверен, почему некоторые переменные будут отображаться как «строка (0)», а другие - «NULL», но я не считаю это очень важным. Возможно, это так, и если да, пожалуйста, сообщите.
Я собираюсь попробовать добавить входные данные формы, из которых я могу повторно получить информацию агента после отправки формы и посмотреть, не имеет ли это значение. Я отправлю обратно результаты.
EDIT
Я добавил пару скрытых входных форм, из которых я могу повторно получить данные агента от POST, и это работает! Благодарим вас за предложение использовать var_dump для отслеживания проблемы, поскольку это имеет решающее значение для решения этой проблемы.
Являются ли ваши сценарии в разных доменах? –
Это также может быть хорошей идеей для переменных 'print_r' или' vardump' в середине и сравнить результат с тем, что, по вашему мнению, должно быть там. –
Также полезно показать весь ваш код. Тот же код, который вы используете. Пример '$ sponsorData', как показано, делает то, что вы говорите. Но он не получит данные из базы данных. –