PDA

View Full Version : ارور نامعلوم xampp برای تابع header()



<?php?>
یک شنبه 29 فروردین 1395, 12:11 عصر
من همچین کدی دارم :


<!DOCTYPE html>
<html lan="fa">
<?php
try{
$dns="mysql:host=localhost;dbname=site;charset=utf8;";
$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-Z\x{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-Z\x{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'});$('.psex 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'});$('.puser name span').text('لطفا نام کاربري خود را پر کنيد !');</script>";
}
else if(!preg_match('/^[a-zA-Z0-9_@.]{3,50}$/i',$index['username'])){
echo "<script>$('.pusername').css({'display':'block'});$('.puser name span').text('نام کاربري نا معتبر !');</script>";
}
else if($rowcount>0){
echo "<script>$('.pusername').css({'display':'block'});$('.puser name span').text('نام کاربري شما قبلا ثبت شده است !');</script>";
}
else{
$e=1;
}

/* validation password */
if(empty($index['password'])){
echo "<script>$('.ppassword').css({'display':'block'});$('.ppass word span').text('لطفا رمز عبور خود را پر کنيد !');</script>";
}
else if(!preg_match('/^[a-zA-Z0-9_@.]{8,50}$/i',$index['password'])){
echo "<script>$('.ppassword').css({'display':'block'});$('.ppass word span').text('رمز عبور نا معتبر !');</script>";
}
else{
$f=1;
}
/* validation repeatpassword */
if(empty($index['repeatpassword'])){
echo "<script>$('.prepeatpassword').css({'display':'block'});$(' .prepeatpassword span').text('لطفا تکرار رمز عبور خود را پر کنيد !');</script>";
}
else if(!preg_match('/^[a-zA-Z0-9_@.]{8,50}$/i',$index['password'])){
echo "<script>$('.prepeatpassword').css({'display':'block'});$(' .prepeatpassword span').text('نکرار رمز عبور نا معتبر !');</script>";
}
else if($index['password']!==$index['repeatpassword']){
echo "<script>$('.prepeatpassword').css({'display':'block'});$(' .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:\xampp\htdocs\www\pt\index.php:105) in D:\xampp\htdocs\www\pt\index.php on line 214
اطلاعات ثبت میشه تو دیتابیس ولی مشکلش با تابع header هست .
من از نرم افزار شبیه ساز xampp استفاده میکنم .

تشکر

mroveissi
یک شنبه 29 فروردین 1395, 14:23 عصر
سلام :-)
همیشه یادتون باشه که نباید قبل از استفاده از تابع header() خروجی html داشته باشید. کافیه که جاهایی که از تابع header استفاده کردید رو به قبل از html ها انتقال بدید.
در واقع حتی یک کاراکتر فاصله که خارج از کد php شما و قبل از header چاپ بشه این ارور رو به شما بر می گردونه