конвертировать значения $ _POST в CSV

Обновленная ситуация:

Мне удалось создать регистрационную форму, которая выводит данные в новый файл CSV для использования в отдельной базе данных. Однако код, который отправляет вложение, не работает, но система сохраняет файл в отдельной папке (я должен подчеркнуть, что это во время тестирования).

У меня вопрос, могу ли я создать CSV-файл и отправить его по электронной почте? Если так, что мне нужно сделать?

Мне также известно, что существуют угрозы безопасности: одно из предложений заключалось в том, чтобы хранить файлы CSV вне корневого каталога. Это надежно, и если нет, кто-нибудь может дать какие-либо рекомендации?

Мой код:

<?php

$_POST['password'] = md5($_POST['password']);

$headers=array_keys($_POST);

$file = "csv/" . $_POST['username'].date('Ymdhis').".csv"; //filename

$file = fopen($file, 'a');
fputcsv($file, $headers);
fputcsv($file, $_POST);
fclose($file);

require_once('email/PHPMailerAutoload.php');

$m = new PHPMailer;

$m->isSMTP();
$m->SMTPAuth = true;
$m->SMTPDebug = 0;

$m->Host = 'mymail.com';
$m->Username = '[email protected]';
$m->Password = 'mypass';
$m->SMTPSecure = 'SSL';
$m->Port = 26;

$m->From = '[email protected]';
$m->FromName = 'My name';
$m->addReplyTo('[email protected]', 'Reply Address');
$m->AddAddress('[email protected]', 'My name');

$m->isHTML(true);

$m->addAttachment('csv/data.csv', 'data.csv');

$m->Subject = 'New feed ';
$m->Body = '<p>This is an email just sent from our website</p><p><strong>Please import into your database.</strong></p>';
$m->AltBody = 'This is the body.  Please import into the database';

if($m->send()) {
echo '<h1>Thank you</h1>  <p>We have received your Registration and will send you confirmation details shortly.</p>';

} else {
echo $m->ErrorInfo;
}

У меня также есть поле флажка, которое должно быть записано с запятыми, разделяющими значения, например, 1,2,3. Как я могу написать это?

Любая помощь / совет будут, как всегда, с благодарностью приняты.

Спасибо заранее.

1

Решение

$_POST['id']="101";                               //example data
$_POST['username']="kraysak";                     //example data
$_POST['password']="grumpycat";                   //example data
$_POST['usergroup']="admin";                      //example data
$_POST['lastaccess']="14-10-2014 00:01";          //example data,

$_POST['password'] = md5($_POST['password']);

$headers=array_keys($_POST);

$file = $_POST['username'].date('Ymdhis').".csv"; //filename

$file = fopen($file, 'a');
fputcsv($file, $headers ); //write headers (key of the $_POST array (id,username,password,etc)
fputcsv($file, $_POST );
fclose($file);

это создать файл с именем kraysak20141014010253.csv со следующей информацией:

id,username,password,usergroup,lastaccess
101,kraysak,5557981401e83c1963412f19c7487965,amdin,"14-10-2014 00:01"

мне сложно объяснить, (мой английский не очень хорош), но функция fputcsv записывает содержимое массива в файл, а $ _POST — это массив … так что вам не нужно создавать новые переменные, вы только нужно использовать функцию md5 () в одной переменной.

1

Другие решения

fputcsv состоит из двух параметров; местоположение и содержание. Так;

fputcsv(location, content);

или же

$fileNameVariable = 'blah';
$fileName = $fileNameVariable . date('Ymdhis') . '.csv';
$fp = fopen('/exampleDirectoryName/' . $fileName, 'w');
$headers = array ('info1', 'info2', 'info3');
fputcsv($fp, $headers);

Вы можете легко адаптировать этот пример для вашей ситуации.

0

Пытаться:

$csvname=md5(rand());
$fp = fopen("csv/$csvname.csv", "w");
$savearray = [ $name, $email, $password, $usergroup, $lastsid, $fname, $lname, $lastaccess, $company, $phone, $addone, $addtwo, $city, $stateprov, $country, $postalcode, $rescom, $addbook, $subscriptions, $affilid, $affilcommpct, $affilsalestodate, $affilcommearned, $affilcommowed, $affilcommpaid, $whlsalepct, $show_currency, $loyaltypoints ];
fputcsv($fp, $savearray);
fclose($fp);

использование array() на $savearray вместо [] для старых версий php.

0
По вопросам рекламы [email protected]