<?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> </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 استفاده میکنم .
تشکر
<!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> </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 استفاده میکنم .
تشکر