Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как переписать переменную в другом файле ?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как переписать переменную в другом файле ?
kuzmit4
Отправлено: 01 Июня, 2015 - 14:54:13
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




Добрый день. Интересует следующий вопрос - как переписать переменную в другом php фале.
Есть два файла.
1. файл index.php
В нем кнопка "переписать переменную"
Код inedx.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. echo "
  3. <form action=\"\">
  4. <input type=\"password\" placeholder=\"Пароль\" name=\"password\" />
  5. <input type=\"submit\" value=\"Задать пароль\" />
  6. </form>
  7. ";
  8. ?>

2. файл test.php
В нем будет куча кода и переменная $a - по нажатию на кнопку в файле index.php - нужно в переменную $a занести какое-то значение.
Код test.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // ... много кода php
  3. $a = ""; //сюда надо занести значение по нажатию на кнопку в другом файле
  4. // ... много кода php
  5. ?>


Есть ли возможность такое сделать не меняя остальной код в test.php
А только задать значение в переменную ?
Подскажите пожалуйста как сделать, или направьте на работающий велосипед.
Спасибо, с ув. Дмитрий!
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Июня, 2015 - 15:47:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Где-то я такое видел, а, точно, тут: http://phpfaq[dot]ru/na_tanke
 
 Top
kuzmit4
Отправлено: 02 Июня, 2015 - 22:17:49
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




Дело в том что мне нужно переписать переменную (переписать сам файл физически) а не передать значение переменной GET или POST
 
 Top
LIME
Отправлено: 02 Июня, 2015 - 22:28:51
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Плохая идея
не лучше положить ее куда-нибудь а в принимающем скрипте выбрать ее
 
 Top
Viper
Отправлено: 02 Июня, 2015 - 23:22:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Я бы вынес все перезаписываемые переменные в отдельный файл, иначе будет попа-боль.

Файл с переменными config.php

PHP:
скопировать код в буфер обмена
  1. class Config {
  2.         public $value1 = 'foo';
  3.         public $value2 = 'var';
  4.         public $value3 = 'baz';
  5. }


Класс для обработки всей этой кухни
PHP:
скопировать код в буфер обмена
  1. class Vars {
  2.         // Читаем файл
  3.         public static function getConfig() {
  4.                 include_once('./config.php');
  5.  
  6.                 $vars = new Config;
  7.  
  8.                 return $vars;
  9.         }
  10.  
  11.         // Сохраняем файл
  12.         public static function store($params) {
  13.                 @set_time_limit(ini_get('max_execution_time'));
  14.  
  15.                 $file = './config.php';
  16.                 $vars = '';
  17.  
  18.                 if (!file_exists(dirname($file))) {
  19.                         return false;
  20.                 }
  21.  
  22.                 foreach (get_object_vars($params) as $k => $v) {
  23.                         if (is_scalar($v)) {
  24.                                 $vars .= "\tpublic $" . $k . " = '" . addcslashes($v, '\\\'') . "';\n";
  25.                         } elseif (is_array($v) || is_object($v)) {
  26.                                 $vars .= "\tpublic $" . $k . " = " . self::getArrayString((array) $v) . ";\n";
  27.                         }
  28.                 }
  29.  
  30.                 $str = "<?PHP \n";
  31.                 $str .= "class Config {\n";
  32.                 $str .= $vars;
  33.                 $str .= "}\n";
  34.  
  35.                 $result = is_int(file_put_contents($file, $str)) ? true : false;
  36.  
  37.                 return $result;
  38.         }
  39.  
  40.         // Мегаметод для массивов
  41.         private static function getArrayString($array) {
  42.                 $s = 'array(';
  43.                 $i = 0;
  44.  
  45.                 foreach ($array as $k => $v) {
  46.                         $s .= ($i) ? ', ' : '';
  47.                         $s .= '"' . $k . '" => ';
  48.  
  49.                         if (is_array($v) || is_object($v)) {
  50.                                 $s .= self::getArrayString((array) $v);
  51.                         } else {
  52.                                 $s .= '"' . addslashes($v) . '"';
  53.                         }
  54.  
  55.                         $i++;
  56.                 }
  57.  
  58.                 $s .= ')';
  59.  
  60.                 return $s;
  61.         }
  62. }


Как использовать
1. Получение значений
PHP:
скопировать код в буфер обмена
  1. $vars = new Vars;
  2. $config = $vars->getConfig();
  3. echo $config->value1;


2. Сохранение значений
PHP:
скопировать код в буфер обмена
  1. $vars = new Vars;
  2. // Объект с новыми значениями
  3. $new_config = (object)array(
  4.         'value1' => 1,
  5.         'value2' => 2,
  6.         'value3' => array(1, 2, 3)
  7. );
  8. var_dump($vars->store($new_config));


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
LIME
Отправлено: 02 Июня, 2015 - 23:29:42
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Viper кто говорил о кэшировании конфига?
Да это хорошо чтоб не перечитывать файлы
но тут нужно сохранить состояние
В бд, сессии хз где удобнее
(Добавление)
И еще я не очень понял зачем из класса делать класс
распарсить какой то формат в класс это да
А тут мне не понятно
 
 Top
Viper
Отправлено: 02 Июня, 2015 - 23:48:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




LIME пишет:
но тут нужно сохранить состояние
В бд, сессии хз где удобнее
(Добавление)
И еще я не очень понял зачем из класса делать класс
распарсить какой то формат в класс это да
А тут мне не понятно

1. ТС не говорил о сохранении состояния.
2. На вкус и цвет...


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Июня, 2015 - 23:53:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




LIME пишет:
распарсить какой то формат в класс это да
Кстати да -- жсон самое оно.
 
 Top
LIME
Отправлено: 02 Июня, 2015 - 23:55:16
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




yaml самое оно(для кэширования в класс)
В нем и json возможен
(Добавление)
Viper ))
Какой вкус цвет? Если есть класс его и правь
из пустого в порожнее гоняешь))
 
 Top
DeepVarvar Супермодератор
Отправлено: 03 Июня, 2015 - 00:36:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Для ямла есть нативка? Я что-то пропустил?
 
 Top
LIME
Отправлено: 03 Июня, 2015 - 00:41:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




В смысле нативка? Типа в ядре пыха?
А зачем для разовых действий? Главное он удобнее и мощнее
то что надо

Хотя даже классы собирать тоже есть определенные плюсы
(Добавление)
В смысле из многих 1 собирать
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB