رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ارور نامعلوم xampp برای تابع header
#1
من همچین کدی رو نوشتم :

<!DOCTYPE html>
<html lan="fa">
<?php 
try{
   $dns="mysql:host=localhost;dbname=site;charset=utf  8;";
   $connect=new PDO($dns,'root','');
}
catch(PDOException $error){
   echo 'connection error';
}
include 'function.php';
/* read db*/
$result=$connect->query("SELECT * FROM `signup`");
?>
<head>
   <meta charset="utf-8">
   <title>php</title>
   <!--STYLE-->
   <link rel="stylesheet/less" type="text/css" href="template/style/style.less">
   <script type="text/javascript" src="template/javascript/less.min.js"></script>
   <!--METATAG-->
   <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <meta name="apple-mobile-web-app-capable" content="yes">
   <meta http-equiv="Content-Language"  content="Fa">
   <meta name="description" content="">
   <meta name="keywords" content="">
   <meta name="DC.Subject" lang="fa-ir" content="">
   <meta name="robots" content="index,follow">
   <meta name="copyright" content="">
   <!--END-->
</head>
<body>
<main>
<form class="right" action="<?php htmlspecialchars($_SERVER["PHP_SELF"]) ?>" method="post">
<table class="table1">
   <tr>
       <td>نام</td>
       <td><input type="text" name="name" id="name"></td>
   </tr>
   <tr>
       <td>نام خانوادگي</td>
       <td><input type="text" name="family"></td>
   </tr>
   <tr>
       <td>ايميل</td>
       <td><input type="text" name="email" class="email"></td>
   </tr>
   <tr>
       <td>جنسيت</td>
       <td><select name="sex"><option>مرد</option><option>زن</option></select></td>
   </tr>
   <tr>
       <td>نام کاربري</td>
       <td><input type="text" name="username" class="username"></td>
   </tr>
   <tr>
       <td>کلمه عبور</td>
       <td><input type="text" name="password" class="password"></td>
   </tr>
   <tr>
       <td>تکرار کلمه عبور</td>
       <td><input type="text" name="repeatpassword" class="repeatpassword"></td>
   </tr>
   <tr>
       <td>&nbsp;</td>
       <td><input type="submit" value="ثبت" class="submit" name="submit"></td>
   </tr>
</table>
</form>
<div class="error pname"><img alt="error" src="template/icon/error.png"><span></span></div>
<div class="error pfamily"><img alt="error" src="template/icon/error.png"><span></span></div>
<div class="error pemail"><img alt="error" src="template/icon/error.png"><span></span></div>
<div class="error psex"><img alt="error" src="template/icon/error.png"><span></span></div>
<div class="error pusername"><img alt="error" src="template/icon/error.png"><span></span></div>
<div class="error ppassword"><img alt="error" src="template/icon/error.png"><span></span></div>
<div class="error prepeatpassword"><img alt="error" src="template/icon/error.png"><span></span></div>
</main>
<!--  -->
<section>
   <table class="table2">
       <thead>
           <td>نام</td>
           <td>نام خانوادگي</td>
           <td>ايميل</td>
           <td>جنسيت</td>
           <td>نام کاربري</td>
           <td>پسورد</td>
           <td>مديريت</td>
       </thead>
       <tbody>
       <?php while($rows=$result->fetch(PDO::FETCH_ASSOC)){ ?>
           <tr>
               <td><?php echo $rows['name']; ?></td>
               <td><?php echo $rows['family']; ?></td>
               <td><?php echo $rows['email']; ?></td>
               <td><?php echo $rows['sex']; ?></td>
               <td><?php echo $rows['username']; ?></td>
               <td><?php echo $rows['password']; ?></td>
               <td>
                   <a href="?id=<?php echo $rows['id']; ?>" onclick="return confirm('آيا از حذف اطلاعات اطمينان داريد ؟')"><img alt="delete" src="template/icon/delete.png"></a>
                   <a href="edit.php?id=<?php echo $rows['id']; ?>"><img alt="delete" src="template/icon/edit.png"></a>
               </td>
           </tr>
           <?php }?>
           <!--  -->
                
       </tbody>
        
   </table>
   <a href="?deleteall" onclick="return confirm('آيا تمام اطلاعات جدول حذف شود ؟')"><button type="button">حذف تمام اطلاعات جدول</button></a>
</section>
</body>
<?php 
/* insert */
if($_SERVER["REQUEST_METHOD"]=="POST"){
   if(isset($_POST['name']) && isset($_POST['family']) && isset($_POST['email']) && isset($_POST['sex']) && isset($_POST['username']) && isset($_POST['password']) && isset($_POST['repeatpassword']) && isset($_POST['submit'])){
       $index=array(
           'name'=>input($_POST['name']),
           'family'=>input($_POST['family']),
           'email'=>input($_POST['email']),
           'sex'=>input($_POST['sex']),
           'username'=>input($_POST['username']),
           'password'=>input($_POST['password']),
           'repeatpassword'=>input($_POST['repeatpassword']),
       );
       $a=$b=$c=$d=$e=$f=$g=0;
       /* validation name */
       if(empty($index['name'])){
           echo "<script>$('.pname').css({'display':'block'});$('.  pname span').text('لطفا نام خود را پر کنيد !');</script>";
       }
       else if(!preg_match('/^[a-zA-Zx{0600}-x{06EF}]{3,50}$/u',$index['name'])){
           echo "<script>$('.pname').css({'display':'block'});$('.  pname span').text('کارکتر هاي مجاز : a-z + حروف فارسي + حداقل 3 کارکتر  !');</script>";
       }
       else{
           $a=1;
       }
       /* validation family */
       if(empty($index['family'])){
           echo "<script>$('.pfamily').css({'display':'block'});$(  '.pfamily span').text('لطفا نام خانوادگي خود را پر کنيد !');</script>";
       }
       else if(!preg_match('/^[a-zA-Zx{0600}-x{06EF}]{3,50}$/u',$index['name'])){
           echo "<script>$('.pfamily').css({'display':'block'});$(  '.pfamily span').text('کارکتر هاي مجاز : a-z + حروف فارسي + حداقل 3 کارکتر  !');</script>";
       }
       else{
           $b=1;
       }
       /* validation email */
       $result_email=$connect->query("SELECT `email` FROM `signup` WHERE `email`='".$index['email']."'");
       $rowcount_email=$result_email->rowCount();
       if(empty($index['email'])){
           echo "<script>$('.pemail').css({'display':'block'});$('  .pemail span').text('لطفا ايميل خود را پر کنيد !');</script>";
       }
       else if(!filter_var($index['email'],FILTER_VALIDATE_EMAIL)){
           echo "<script>$('.pemail').css({'display':'block'});$('  .pemail span').text('ايميل نا معتبر !');</script>";
       }
       else if($rowcount_email>0){
           echo "<script>$('.pemail').css({'display':'block'});$('  .pemail span').text('ايميل شما قبلا ثبت شده است !');</script>";
       }
       else{
           $c=1;
       }
       /* validation sex */
       if(empty($index['sex'])){
           echo "<script>$('.psex').css({'display':'block'});$('.p  sex span').text('لطفا جنسيت خود را پر کنيد !');</script>";
       }
       else if(!preg_match('/^[x{0600}-x{06EF}]{2,4}$/u',$index['sex'])){
           $d=0;
       }
       else{
           $d=1;
       }
       /* validation username */
       $result_username=$connect->query("SELECT `username` FROM `signup` WHERE `username`='".$index['username']."'");
       $rowcount=$result_username->rowCount();
       if(empty($index['username'])){
           echo "<script>$('.pusername').css({'display':'block'});  $('.pusername span').text('لطفا نام کاربري خود را پر کنيد !');</script>";
       }
       else if(!preg_match('/^[a-zA-Z0-9_@.]{3,50}$/i',$index['username'])){
           echo "<script>$('.pusername').css({'display':'block'});  $('.pusername span').text('نام کاربري نا معتبر !');</script>";
       }
       else if($rowcount>0){
           echo "<script>$('.pusername').css({'display':'block'});  $('.pusername span').text('نام کاربري شما قبلا ثبت شده است !');</script>";
       }
       else{
           $e=1;
       }
        
       /* validation password */
       if(empty($index['password'])){
           echo "<script>$('.ppassword').css({'display':'block'});  $('.ppassword span').text('لطفا رمز عبور خود را پر کنيد !');</script>";
       }
       else if(!preg_match('/^[a-zA-Z0-9_@.]{8,50}$/i',$index['password'])){
           echo "<script>$('.ppassword').css({'display':'block'});  $('.ppassword span').text('رمز عبور نا معتبر !');</script>";
       }
       else{
           $f=1;
       }
       /* validation repeatpassword */
       if(empty($index['repeatpassword'])){
           echo "<script>$('.prepeatpassword').css({'display':'blo  ck'});$('.prepeatpassword span').text('لطفا تکرار رمز عبور خود را پر کنيد !');</script>";
       }
       else if(!preg_match('/^[a-zA-Z0-9_@.]{8,50}$/i',$index['password'])){
           echo "<script>$('.prepeatpassword').css({'display':'blo  ck'});$('.prepeatpassword span').text('نکرار رمز عبور نا معتبر !');</script>";
       }
       else if($index['password']!==$index['repeatpassword']){
           echo "<script>$('.prepeatpassword').css({'display':'blo  ck'});$('.prepeatpassword span').text('رمز عبور با تکرار آن همخواني ندارد !');</script>";
       }
       else{
           $g=1;
       }
       if($a==1 && $b==1 && $c==1 && $d==1 && $e==1 && $f==1 && $g==1){
           $connect->query("INSERT INTO `signup`(`name`,`family`,`email`,`sex`,`username`,  `password`,`repeatpassword`) VALUES('".$index['name']."','".$index['family']."','".$index['email']."', '".$index['sex']."','".$index['username']."' ,'".$index['password']."' ,'".$index['repeatpassword']."')");
           header('location: index.php');
       }

}
}
/* update */
/* delete */
if(isset($_GET['id'])){
   $check_id=$connect->query("SELECT `id` FROM `signup` WHERE `id`='".$_GET['id']."'");
   $check_id_count=$check_id->rowCount();
   if($check_id_count==1){
       $connect->query("DELETE FROM `signup` WHERE `id`='".$_GET['id']."' ");
       header('location: index.php');
   }
   else{
       echo "<script>alert('ip not found')</script>";
       exit();
   }
    
}
if(isset($_GET['deleteall'])){
   $deleteall=$connect->query("DELETE FROM `signup`");
   if($deleteall){
       header("location: index.php");
   }
}
?>
</html>


یک فرم عضویت ساختم - قصدم این بود که بعد از اینکه کاربر دکمه submit رو فشار داد اطلاعات بعد از ***** شدن برای ثبت به دیتابیس ارسال بشن و بعدش تابع header رو اجرا کنه تا صفحه رفرش بشه و header خالی بشه . همچنین یک جدول کنار فرم عضویت ساختم که اطلاعات رو از دیتابیس fetch میکنه و به من نمایش میده .

همه چیز درست کار میکنه . اما مشکل اینجاست که بعد از اینکه 2 تا رکورد از طریق فرمی که ساختم ثبت میکنم , برای سومین رکوردی که میخوام ثبت کنم این ارور رو میده :
Warning: Cannot modify header information - headers already sent by (output started at D:xampphtdocswwwptindex.php:105) in D:xampphtdocswwwptindex.php on line 214
اطلاعات ثبت میشه تو دیتابیس ولی مشکلش با تابع header هست .
من از نرم افزار شبیه ساز xampp استفاده میکنم .

تشکر
پاسخ
تشکر شده توسط:
#2
فایلتون رو با کدگذاری UTF-8 without BOM ذخیره کنید.
پاسخ
تشکر شده توسط: ?php?
#3
اگه مشکل حل نشد، توی اولین خط اسکریپت‌ها این کد رو بگذارین (دقیقاً اولین کارکتر فایل باشین) :
ob_start();
و توی آخرین خطشون هم این کد رو بگذارین:
ob_end_flush();
پاسخ
تشکر شده توسط: ?php?




کاربران در حال بازدید این موضوع: 1 مهمان