2014-08-28 2 views
1

Я сейчас в процессе создания основного PHP-приложения/страницы, однако у меня возникла проблема. Мне нужно было создать скрипт, который будет редактировать переменную в другом скрипте и установить ее на что-то.Как использовать PHP для редактирования переменной в другом скрипте PHP?

Например, один сценарий будет сказать:

$test = "username"; 

И другой сценарий будет установить эту переменную на что-то другое.

Итак, Once (index.php) страницу в PHP скрипта загружается, PHP-скрипт изменит первый сценарий (variables.php) для:

$test = "username20"; 

Однако, я не знаю, как это сделать это. Есть ли способ, которым я мог бы это сделать?

EDIT:

мне нужен базовый автоматический редактор, как это потому, что файл является файлом конфигурации (Поэтому в основном, мне нужен текст внутри, чтобы быть там постоянно, это означает, что «Session» не будет Работа.).

Спасибо, если вы можете помочь.

+0

Вы просто хотите, чтобы записать в файл в PHP? – PeeHaa

+0

Вы могли бы это сделать, но это не сработало, было бы очень неуверенно и т. Д. Большинство серверных сред имеют доступ только для чтения к скриптам PHP, чтобы предотвратить подобные вещи. – amphetamachine

+2

Не делайте этого, храните его в зашифрованном виде в базе данных –

ответ

2

Вы должны использовать fopen, чтобы открыть файл, прочитать файл с FREAD искать хотел переменную , а затем писать FWRITE.

$fn = "variables.php"; 
$file = fopen($fn, "w+"); 
$size = filesize($fn); 
$text = fread($file, $size); 
fwrite($file, 'text'); 
fclose($file); 
+0

Я не был downvoting, но я предполагаю, что он установит только другое значение, а не напрямую отредактирует один PHP-файл. – derdida

+0

@derdida Вот что он просил. – Lior

+1

Что делать, если два пользователя сразу записывают файл? Вот почему были изобретены базы данных. – developerwjk

4

Лучше использовать переменные сеанса. Они действительны во всех ваших скриптах PHP при загрузке сеанса.

http://php.net/manual/en/book.session.php

+3

Для пароля? Разве это не длится дольше, чем сеанс? –

+1

Он не просил хранить пароль. Только определенное значение. Для passwort я бы лучше сохранил его в зашифрованном виде в базу данных. – derdida

+2

@derdida, примером, который он дал, был пароль. – developerwjk

-2

Это зависит от того, чего вы хотите. Если вы создаете какую-то «панель управления» только для себя; вам нужно жестко запрограммировать пароль и использовать сеанс/файл cookie, чтобы оставаться «вошедшим в систему».

Если вы хотите, чтобы несколько человек использовали его, даже систему-член, вам понадобится база данных.

Есть базы данных, основанные на текстовых файлах, но я думаю, что меньше было бы лучше.

UPDATE:

Вы не можете на самом деле, что, ну, вы могли бы, но это было бы очень плохая практика.

Если то, что вы хотите, отредактированный не секретная информация, вы можете писать/читать/редактировать обычный файл (например, info.txt или info.dat)

Очередное обновление Если вы настаиваете на написание .php, вы технически можете ...

Использование функций файла для доступа к файлу (например: data.php), вы можете буквально написать: $ user_password = "blah";

Затем включите data.php в свой основной файл и определите $ user_password. Если вы хотите отредактировать его, используйте функции файлов для обновления файла data.php.

1

Как я вижу, у вас есть несколько вариантов. Как вы заявили, это будет какой-то файл конфигурации, поэтому, скорее всего, у вас будет несколько вариантов конфигурации. Хотя в вашем примере вы разделили значения imho, имеет смысл использовать некоторую коллекцию. И конфигурационный файл может выглядит следующим образом:

<?php 

$config = array(
    'dbname' => 'my_awesome_db', 
    'dbhost' => 'localhost', 
    'dbuser' => 'notroot', 
    'dbpass' => 'secret', 
); 

Использование PHP можно изменить выше массива и записать его обратно в файл:

<?php 

require __DIR__ . '/config.php'; 

$config['dbhost'] = '10.1.0.1'; 

file_put_contents(__DIR__ . '/config.php', '<?php $config = ' . var_export($config, true) . ';'); 

Другой способ пойти заключается в использовании формат JSON:

{ 
    "foo": "bar", 
    "baz":"qux" 
} 

Использование PHP можно изменить выше JSON и записать его обратно в файл:

<?php 

$config = json_decode(file_get_contents(__DIR__ . '/config.php'), true); 

$config['dbhost'] = '10.1.0.1'; 

file_put_contents(__DIR__ . '/config.php', json_encode($config, JSON_PRETTY_PRINT)); 

Выше всего два варианта. Вы также можете написать файл ini, базу данных или любой другой формат.

Некоторые заметки, хотя:

  • , если файл будет содержать конфиденциальную информацию, которую вы должны убедиться, что он находится за пределами вашего корня документа, чтобы не допустить, что делает его случайно общественности (например, сервер расконфигурация или человеческая ошибка)
  • если параллелизм будет проблемой вы либо должны смотреть в locking mechanism или использовать базу данных, чтобы она справиться с этим для вас
  • Нормальные правила применяются, если все это будет когда-нибудь, чтобы получить или был в контакт любым способом с любой формой ввода пользователем
  • Хотя нет ничего неправильного в том, что у него есть такой файл конфигурации. Это не серебряная пуля, и ее следует использовать только тогда, когда она имеет смысл. Для некоторых вещей вам лучше использовать базу данных в зависимости от варианта использования.

Связанные гласит:

Demos:

Смежные вопросы