مشکل در header

asadizarch

New Member
سلام
من توی صفحه تست ثبت مشخصات (http://asady.ir/orderpackage.php) وقتی کلید سفارش رو میزنم ارور header رو میده.
if ( (empty($fish)) OR (empty($paydate)) OR (empty($shobe)) OR (empty($ostan)) OR (empty($address)) ) { echo " .لطفا فیلدهای ستاره دار را تکمیل نمایید<br>" ; $err=1 ; }
$pattern="[a-zA-Z0-9]+\@+[a-zA-Z0-9]+\.+[a-zA-Z0-9]" ;
if (!ereg($pattern,$email)) {echo "<br>.لطفا ایمیل را درست وارد کنید" ; $err=1 ;}
if ($err==1) { include "orderpackage.php" ; exit() ; }
if ($err==0) {
$insert=mysql_query("insert into `buy` (`id` , `name` , `fish` , `email`, `paydate` , `shobe` , `address`, `tell` , `ostan` , `shahrestan` , `zipcode`) values ('' , '$name' , '$fish' , '$email', '$paydate' , '$shobe' , '$address', '$tell' , '$ostan' , '$shahrestan' , '$zipcode') " )or die(mysql_error());
if ($insert)
{
header("location:finished.php") ;
}
چیکارش کنم ؟؟؟؟؟؟؟؟؟؟؟:sad::sad::sad:
 

peyman1987

Member
دوست عزیز قبل از تاپیک زدن حتما سرچ کن.

دو تا مشکل میتونه داشته باشه:

1- قبل از دستور Header توی صفحه ات چیزی چاپ شده.
2- اگه مطمئنی که چاپ نشده فایلت رو با یه ادیتور که بتونه کاراکترهای انکودینگ رو تشخیص بده ( Zend Studio ، PHP Designer یا ++Turbo C ) باز کن سه کاراکتر اضافی بالای صفحه هست اونا رو پاک کن و دوباره صفحه رو ذخیره کن.

موفق باشی
 

asadizarch

New Member
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<body>
</body>
</html>

<?php
$connect=mysql_connect("localhost","irasadi_asady","amafhh") or die("Not connected !!!".mysql_error());
$select=mysql_select_db("irasadi_asady",$connect) or die ("Not selected".mysql_error());
$ok=$_POST["ok"] ;
if (!isset($ok)) header("location:eek:rderpackage.php") ;
$fish=$_POST["fish"];
$paydate=$_POST["paydate"];
$shobe=$_POST["shobe"];
$name=$_POST["name"];
$email=$_POST["email"];
$ostan=$_POST["ostan"];
$shahrestan=$_POST["shahrestan"];
$tell=$_POST["tell"] ;
$zipcode=$_POST["rd"] ;
$address=$_POST["address"];

$err=0 ;
if ( (empty($fish)) OR (empty($paydate)) OR (empty($shobe)) OR (empty($ostan)) OR (empty($address)) ) { echo " .لطفا فیلدهای ستاره دار را تکمیل نمایید<br>" ; $err=1 ; }
$pattern="[a-zA-Z0-9]+\@+[a-zA-Z0-9]+\.+[a-zA-Z0-9]" ;
if (!ereg($pattern,$email)) {echo "<br>.لطفا ایمیل را درست وارد کنید" ; $err=1 ;}
if ($err==1) { include "orderpackage.php" ; exit() ; }
if ($err==0) {
$insert=mysql_query("insert into `buy` (`id` , `name` , `fish` , `email`, `paydate` , `shobe` , `address`, `tell` , `ostan` , `shahrestan` , `zipcode`) values ('' , '$name' , '$fish' , '$email', '$paydate' , '$shobe' , '$address', '$tell' , '$ostan' , '$shahrestan' , '$zipcode') " )or die(mysql_error());
if ($insert)
{
ob_end_clean();
header("location:finished.php") ;
}
}

?>
</body>
</html>
 

peyman1987

Member
دوست عزیز اولا همیشه کداتون رو داخل تگ code بزارین تا اینقدر بهم ریخته نباشه.
بعدش خداوکیلی خودتون یه نگاه به کدی که نوشتین بندازین. دوبار از تگ </body> و </html> استفاده کردی. البته مشکلت از این نیست ولی خوب یه مقدار با دقت بیشتری کد بنویسین. حدالامکان هم از برنامه هایی مثل فرانت پیج استفاده نکنین.

همونطور که توی پست قبلی گفتم نباید قبل از دستور header چیزی توی صفحه چاپ شده باشه. اینجا شما همه صفحه رو قبل از header چاپ کردین. کد زیر باید کار کنه. منطقا درسته ولی تستش نکردم.

PHP:
<?php
$connect=mysql_connect("localhost","irasadi_asady" ,"amafhh") or die("Not connected !!!".mysql_error());
$select=mysql_select_db("irasadi_asady",$connect) or die ("Not selected".mysql_error());
$ok=$_POST["ok"] ;
if (!isset($ok)) header("location:orderpackage.php") ;
$fish=$_POST["fish"];
$paydate=$_POST["paydate"];
$shobe=$_POST["shobe"];
$name=$_POST["name"];
$email=$_POST["email"];
$ostan=$_POST["ostan"];
$shahrestan=$_POST["shahrestan"];
$tell=$_POST["tell"] ;
$zipcode=$_POST["rd"] ;
$address=$_POST["address"];

$err=0 ;
if ( (empty($fish)) OR (empty($paydate)) OR (empty($shobe)) OR (empty($ostan)) OR (empty($address)) ) { echo " .لطفا فیلدهای ستاره دار را تکمیل نمایید<br>" ; $err=1 ; }
$pattern="[a-zA-Z0-9]+\@+[a-zA-Z0-9]+\.+[a-zA-Z0-9]" ;
if (!ereg($pattern,$email)) {echo "<br>.لطفا ایمیل را درست وارد کنید" ; $err=1 ;}
if ($err==1) { include "orderpackage.php" ; exit() ; }
if ($err==0) {
$insert=mysql_query("insert into `buy` (`id` , `name` , `fish` , `email`, `paydate` , `shobe` , `address`, `tell` , `ostan` , `shahrestan` , `zipcode`) values ('' , '$name' , '$fish' , '$email', '$paydate' , '$shobe' , '$address', '$tell' , '$ostan' , '$shahrestan' , '$zipcode') " )or die(mysql_error());
if ($insert)
{
ob_end_clean();
header("location:finished.php") ;
}
}

?>
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<body>

</body>
</html>


من توی کدتون دست نبردم برای اینکه الگوریتمتون برای خطایابی خیلی نادرسته بهتره یه مقدار بیشتر دقت کنین.
جستجو هم یادتون نره.
 

asadizarch

New Member
میشه خطایابی رو با جاوا اسکریپت انجام داد و نتیجه فانکشن رو به php داد و در صورت true بودن مقادیر رو به دیتابیس فرستاد.
 

peyman1987

Member
بله میشه اینکار رو انجام داد ولی اصلا پیشنهاد نمیشه چون کاربر براحتی میتونه جاوااسکریت مرورگر رو غیرفعال کنه و اطلاعات نادرست رو توسط فرم شما ارسال کنه.
به آدرس زیر یه نگاه بندازین بهتون کمک میکنه.

http://barnamenevis.org/forum/showthread.php?t=85465
 

جدیدترین ارسال ها

بالا