Bunda yanlış bir yol arıyor olabilir, ama ben onun şeyi yapar bir form var (e-posta vs vs gönderir) ama ben de ayrıntıları girilen kullanıcı bazı basit flatfile csv kaydını yapmak için bazı kod koymak.
Bir kullanıcı yanlışlıkla '"," bob himynameis' Örneğin koyar eğer (tırnak kapsüllü değildi çünkü) bu csv satır kıracak ya da ben veri htmlspecialchars () ve stripslashes () kullanırsanız, ben sonuna kadar Bir çirkin veri değeri 'himynameis","bob'.
Benim soru nasıl '"' karşılamak üzere gelen veri işleyebilir Benim csv dosyayı bozmadan şeklinde konduğunu? Olduğunu
Bu csv günlük dosyası oluşturmak için benim kodudur.
@$name = htmlspecialchars(trim($_POST['name']));
@$emailCheck = htmlspecialchars(trim($_POST['email']));
@$title = htmlspecialchars(trim($_POST['title']));
@$phone = htmlspecialchars(trim($_POST['phone']));
function logFile($logText)
{
$path = 'D:\logs';
$filename = '\Log-' . date('Ym', time()) . '.csv';
$file = $path . $filename;
if(!file_exists($file))
{
$logHeader = array('Date', 'IP_Address', 'Title', 'Name', 'Customer_Email', 'Customer_Phone', 'file');
$fp = fopen($file, 'a');
fputcsv($fp, $line);
}
$fp = fopen($file, 'a');
foreach ($logText as $record) {
fputcsv($fp, $record);
}
}
//Log submission to file
$date = date("Y/m/d H:i:s");
$clientIp = getIpAddress(); //get clients IP address
$nameLog = stripslashes($name);
$titleLog = stripslashes($title);
if($_FILES['uploadedfile']['error'] == 4) $filename = "No file attached."; //check if file uploaded and return
$logText = array(array("$date", "$clientIp", "$titleLog", "$nameLog", "$emailCheck", "$phone", "$filename"));
logFile($logText); //write form details to log
İşte gelen dizi verileri bir örnek:
Array
(
[0] => Array
(
[0] => 2010/05/17 10:22:27
[1] => xxx.xxx.xxx.xxx
[2] => title
[3] => """"himynameis","bob"
[4] => example@example.com
[5] => 346346
[6] => No file attached.
)
)
TIA
Jared