PDA

View Full Version : سوال: مشکل ثبت نشدن رشته در فایل



amin7x
جمعه 25 بهمن 1392, 15:07 عصر
سلام
من اسکریپت زیر رو نوشتم.
توی لوکال به خوبی کار میکنه ولی وقتی روی سرور میبرمش پیغام ثبت ایمیل میاد ولی ایمیل ثبت نمیشود!



<?php
function filterInput($input){
$input = trim($input);
$input = htmlspecialchars($input);
$input = mysql_real_escape_string($input);
return $input;
}

if(isset($_POST['newsletter_submit'])){
$email = filterInput($_POST['newsletter_email']);
$openFile = fopen('emails.txt', 'a') or die('Cannot open file: '.'emails.txt');
$write = fwrite($openFile, "\r\n".$email);
if($write){
echo "<p id='succeed'>با تشکر ایمیل شما با موفقیت ثبت شد. <br> اکنون به صفحه اصلی منتقل میشوید</p>";
fclose($openFile);
header("refresh:5;url=index.html");
}
else{
fclose($openFile);
}
}
else{
header('Location: index.html');
}
?>


ممنون میشم کمکم کنید

amin7x
یک شنبه 27 بهمن 1392, 23:21 عصر
UP POST...

amin7x
پنج شنبه 01 اسفند 1392, 18:46 عصر
UP POST...

MostafaEs3
پنج شنبه 01 اسفند 1392, 19:07 عصر
//////////

amin7x
پنج شنبه 01 اسفند 1392, 20:19 عصر
سلام. این کد رو تست کنید:


<?php
header('Content-Type: text/html; charset=utf-8');

function filterInput($input){
return trim(htmlspecialchars($input, ENT_QUOTES, "UTF-8"));
}

if (isset($_POST['newsletter_email'])) {
$handle = fopen('emails.txt', 'a+');

if ($handle) {
$write = fwrite($handle, filterInput($_POST['newsletter_email']) . "\r\n");
if ($write) {
echo '<p id="succeed">با تشکر ايميل شما با موفقيت ثبت شد. اکنون به صفحه اصلي منتقل ميشويد.</p>';
header("refresh: 5; url=index.html");
} else {
echo 'متاسفانه ايميل ثبت نشد!';
}

fclose($handle);
} else {
die('Cannot open file: emails.txt');
}
} else{
header('Location: index.html');
}
?>


ممنون
کدتون کار کرد ولی متاسفانه به صفحه مورد نظر منتقل نمیشه!

MostafaEs3
پنج شنبه 01 اسفند 1392, 22:12 عصر
//////////

sh.n.n786
پنج شنبه 01 اسفند 1392, 23:26 عصر
<?php
ob_start();

.... // Code ha ra inja benevisid

ob_end_flush();
?>

amin7x
جمعه 02 اسفند 1392, 19:45 عصر
<?php
ob_start();

.... // Code ha ra inja benevisid

ob_end_flush();
?>


میشه یک توضیح بدید این کد چه کار میکنه؟

2undercover
جمعه 02 اسفند 1392, 19:57 عصر
تابع ob_start باعث میشه که هر مقداری که به عنوان خروجی ارسال میشه در Buffer ذخیره بشه (یعنی خروجی بلافاصله ارسال نمیشه) و وقتی که برنامه تمام شد یا تابع ob_flush (یا انواع دیگه آن) فراخوانی شدند خروجی از Buffer به کاربر ارسال میشه.

خب Header ها قبل از مقادیر خروجی به مرورگر ارسال میشن، حالا وقتی شما یک مقدار رو به عنوان خروجی بفرستید (حتی یک بایت) دیگه نمی تونید، Header ها رو تغییر بدید؛ چون ارسال شدند.

ولی وقتی از Buffer کردن خروجی استفاده می کنید، چون خروجی Buffer میشه، شما می تونید Header ها و حتی خروجی رو قبل از ارسال تغییر بدید.