Изменить одно слово файла PHP с помощью PHP-скрипта - PullRequest
0 голосов
/ 12 марта 2011

У меня есть форма с текстовым полем ввода, которое идентифицируется как username. При нажатии кнопки отправки используется этот код:

<?php
if (isset($_POST['submit'])) {
$myUser=$_POST['username'];  
$path="/data/www/vhosts/themacsplash.com/httpdocs/ClipBoy/userfiles/";
$fpath="/data/www/vhosts/themacsplash.com/httpdocs/ClipBoy/userfiles/user.php";
$myFolder = $path . $myUser;
$myFile = $myUser.".php";
$old_umask = umask(0);
mkdir($myFolder, 0777);
$myFileDes = $myFolder."/".$myFile;
copy($fpath, $myFileDes);  
umask($old_mask);
}
?>

Это создает каталог и файл, файл дублируется из user.php В user.php есть этот код, который необходимо изменить при отправке:

$result = mysql_query("SELECT link, notes FROM links WHERE username='will';");

Это должно измениться, где написано username='will'; Необходимо изменить волю на имя пользователя, указанное в форме.

Как бы я это сделал?

Ответы [ 2 ]

1 голос
/ 12 марта 2011

Вы можете получить имя пользователя динамически из каталога, в котором находится файл.Используйте dirname и __FILE__, чтобы получить:

$username = dirname(__FILE__);
$username = mysql_real_escape_string($username);
$result = mysql_query("SELECT link, notes FROM links WHERE username='" . $username . "';");

Также я бы посоветовал вам отфильтровать ввод от пользователя:

$myUser = preg_replace('/[^a-zA-Z0-9_]/', '', $myUser);

Это заменит каждый символ, который не являетсябуквенно-цифровой символ или подчеркивание пустой строкой.В противном случае пользователь может выбрать "../../../foo/" в качестве имени пользователя, что, вероятно, нарушит работу сценария.

0 голосов
/ 12 марта 2011

Сначала необходимо прочитать исходное содержимое user.php, а затем заменить строку на требуемое значение.

$content = "";              // read Text file, read all lines into an array
if ($arr = @file ($fpath))      // Do this if file exists
    foreach ($arr as $line) $content .= $line.'\n';

$fp = fopen ($myFileDes, "w");  // create new file
$newContent = str_replace("'will'", $myUser, $content);
fputs ($fp, $newContent);
fclose ($fp);
...