Как передавать переменные между php-скриптами?

Есть ли способ передавать значения и переменные между php-скриптами?

Формально я пытался закодировать страницу входа, и когда пользователь вводит неправильный ввод, сначала другой скрипт проверит ввод, и если он неправильный, сайт вернется на последнюю страницу скрипта и покажет предупреждение типа «Это неправильный ввод». Думаю, для этой цели мне нужно передать значения из скриптов.

С уважением... :Р


person erogol    schedule 15.04.2011    source источник
comment
PHP-сессии? php.net/manual/en/book.session.php   -  person GordonM    schedule 02.11.2016


Ответы (7)


Чтобы передать информацию через GET:

    header('Location: otherScript.php?var1=val1&var2=val2');

Сеанс:

    // first script
    session_start(); 
    $_SESSION['varName'] = 'varVal';
    header('Location: second_script.php'); // go to other

    // second script
    session_start(); 
    $myVar = $_SESSION['varName'];

Публикация: взгляните на это.

person Tanner Ottinger    schedule 15.04.2011

Вы не можете include (или include_once или require) другой сценарий?

person Albireo    schedule 15.04.2011
comment
Все ли переменные передаются при включении скрипта или только глобальные? - person Chris Kimpton; 13.07.2011
comment
Когда вы include создаете другой скрипт, его код вставляется во включающий, поэтому он получает то же самое, что и вы, написав код непосредственно в первом. - person Albireo; 13.07.2011
comment
Спасибо - это отличается от require ? Я пробовал требовать и, похоже, не делал этого. - person Chris Kimpton; 14.07.2011
comment
Если include не может найти указанный файл, выдается предупреждение, require выдает фатальное исключение. - person Albireo; 14.07.2011

Быстрый способ — использовать либо глобальные переменные, либо переменные сеанса.

global $variable = 'something';

«Лучшим» способом сделать это было бы включить скрипт и передать переменную по параметру, например

// script1.php contains function 'add3'
function add3( $value ) {
  return $value + 3;
}

// script2.php
include "script1.php";
echo 'Value is '.add3(2); // Value is 5
person Dan Blows    schedule 15.04.2011
comment
Это мой любимый. Иногда вы не можете использовать сеансы, но в этом случае вам даже не нужно. Единственное, что вам нужно сделать global $variable; $variable = 'something';, чтобы объявление и присваивание не находились в одной строке. - person Pavel; 09.10.2020

Я бы сказал, что вы также можете хранить переменную в кеше, если вам это действительно нужно.

person dotslashlu    schedule 16.09.2011

Ты можешь использовать:

  • временный файл (например, tempnam()),
  • кэш (NoSQL: memcached, redis),
  • переменная сеанса ($_SESSION), но сначала необходимо запустить сеанс.
person kenorb    schedule 30.09.2015

Я использую метод extract() для передачи переменной между скриптами PHP. Это выглядит как пример ниже:

1. Файл index.php

<?php
$data = [
    'title'=>'hello',
    'content'=>'hello world'
];
extract($data);
require 'content.php';

2. Файл content.php:

<?php 
echo $title;
echo $content;
person Tran Van Hoang    schedule 02.11.2016

person    schedule
comment
Это работало безупречно, хотя я немного смущен тем, почему вы должны использовать session_start() в b.php, когда это больше похоже на session_continue(), поскольку, по-видимому, он не создает новую сессию. - person user124384; 23.07.2015
comment
Вот так вот. Без session_start(); вы не можете читать переменные сеанса. - person Michael Rogers; 22.10.2017