2010-01-01 3 views
1

я в настоящее время:PHP Еорепа - имя файл

<?php 
    if (isset($_POST["submitwrite"])) { 
     $handle = fopen("writetest.txt","w+"); 
     if ($handle) { 
      fwrite($handle, "Dan"."¬".$_POST["username"]."¬".$_POST["pollname"]."¬".$_POST["ans1"]."¬".$_POST["ans2"]."¬".$_POST["ans3"]."¬".time()); 
      fclose($handle); 
     } 
    } 
?> 

Однако мне нужно настроить имя файла, чтобы быть динамическим, а не «writetest.txt» Я хотел бы, чтобы это было: имя пользователя + pollname + время .txt с использованием переменных $ _post.

Я также хотел бы изменить каталог, в котором хранятся эти файлы, в/results.

Помогите пожалуйста ...

+1

Итак, в чем вопрос? – notnoop

ответ

1

Вы имеете в виду делать что-то подобное?

$filename = '/results/' . $_POST['username'] . '/' . $_POST['pollname'] . '/time.txt'; 
if (isset($_POST["submitwrite"])) { 
    $handle = fopen($filename,"w+"); 
    // etc... 

Или я вас не понимаю?

Редактировать
Для решения вопроса BalusC указал, что это более полное решение.
Удостоверяется, что значения $_POST['username'] и $_POST['pollname'] действительны, поэтому они не будут создавать недопустимые или, возможно, вредные $filename.

<?php 
$basedir = '/results'; 
$basename = 'time.txt'; 

// Get user and poll names 
$username = $_POST['username']; 
$pollname = $_POST['pollname']; 

// Counteract the old magic_qutoes feature, if needed. 
if(get_magic_quotes_gpc()) { 
    $username = stripslashes($username); 
    $pollname = stripslashes($pollname); 
} 

// Validate user and poll names. 
$regexp = '/^[\w\d\_\-\. \']+$/iu'; 
if(!preg_match($regexp, $username) || !preg_match($regexp, $pollname)) { 
    echo 'Username or pollname is invalid. Aborting!'; 
} 
else { 
    // Compile the complete file name 
    $filename = $basedir . '/' . $username . '/' . $pollname . '/' . $basename; 

    // Write to the file 
    if (isset($_POST["submitwrite"])) { 
     $handle = fopen($filename,"w+"); 
     if ($handle) { 
      fwrite($handle, "Dan"."¬".$_POST["username"]."¬".$_POST["pollname"]."¬".$_POST["ans1"]."¬".$_POST["ans2"]."¬".$_POST["ans3"]."¬".time()); 
      fclose($handle); 
     } 
    } 
} 
?> 
+0

Perfecto! Некоторые, как вам удалось понять меня ... – CLiown

+0

Что произойдет, если есть пользователь с именем пользователя '' foo /../ bar? '? – BalusC

+0

@BalusC: Разрешить только имена a-z, 0-9 и _ и-in? – Midas

1

Еореп создает (по крайней мере, пытается) файл, если он не существует, так $ имя_файла = $ имя пользователя. $ pollname. $ time. '.текст'; $ handle = fopen ($ filename, 'w +');

будет работать нормально. Кстати, w + помещает указатель в начало файла. Если файл уже имеет некоторые данные, он сначала обрезает его. Если вы хотите добавить данные в файл, вы можете использовать 'a +'

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