رفتن به مطلب

مشکل با صفحه عضویت در php


پست های پیشنهاد شده

با عرض سلام و خسته نباشید . من با استفاده از php یک فرم ساده برای عضویت درست کرده ام . اما خوب این عضویت مشکلاتی رو داره . بعد از عضو شدن ریدایرکت صورت نمیگیره فکر کنم و با این ارور مواجه شدم


Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\chapter4\submit.php on line 26
Warning: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\chapter4\submit.php:26) in D:\xampp\htdocs\chapter4\submit.php on line 35

این تمام کدهای مربوط به صفحه signup.php


<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
$host="localhost";
$host_username="root";
$host_password="";
$db_name="db_firstweb";
$db_link=mysql_connect($host, $host_username, $host_password) or die(mysql_errno());
mysql_select_db($db_name, $db_link) or die(mysql_errno());
$tbl_name="tbl_login";
$username=$_POST["username"];
$pwd1=$_POST["password1"];
$pwd2=$_POST["password2"];
//Write sql code here
$successfull=FALSE;
if(strlen($username)>0 && strlen($pwd1)>0 && strlen($pwd2)>0){
if($pwd1==$pwd2){
$sql="select * from $tbl_name where username=$username";

$result= mysql_query($sql,$db_link);
$count=mysql_num_rows($result);
if($count == 0){
$sql="insert into $tbl_name(username,password) values('$username','$pwd1')";
mysql_query($sql,$db_link);
$successfull=true; ///Make sure User data submit successfully...
}
}
}
if($successfull==TRUE){
header("location: login_success.php");
}else{
header("location: signup.php");
}
//
mysql_close($db_link);
?>

کسی میتونه تشخیص بده مشکل از چیه ؟

من حتی از فرمی که قبل کامل شده بود استفاده کردم که اونم که هیچ مشکلی نداشت روی سیستم من با این مشکل روبه روی میشد . بنظر این فرم فقط با سیستم من این مشکل رو داره

لینک به ارسال

الان که روی هاستینگ امتحان کردم فهمیدم این خطا فقط مختص لوکال هاسته . یکی میتونه بگه چرا روی لوکال هاست این خطا و میده و چیکار باید کنم ؟


Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\chapter4\submit.php on line 26
Warning: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\chapter4\submit.php:26) in D:\xampp\htdocs\chapter4\submit.php on line 35

لینک به ارسال

سلام

با noteoad++ باز کنید و از منوی Encoding روی utf-8 without BOM تنظیم کنید ببینید حل میشه یا نه.

  • امتیاز 3
لینک به ارسال

سلام

با noteoad++ باز کنید و از منوی Encoding روی utf-8 without BOM تنظیم کنید ببینید حل میشه یا نه.

خطاهای داده شده


Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\chapter4\submit.php on line 21
Warning: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\chapter4\submit.php:21) in D:\xampp\htdocs\chapter4\submit.php on line 30

لینک به ارسال

از توابع mysql استفاده نکنید منسوخ شده.

خطا هم احتمال داره از ورودی هاتون باشه

  • امتیاز 3
لینک به ارسال

از توابع mysql استفاده نکنید منسوخ شده.

خطا هم احتمال داره از ورودی هاتون باشه

یعنی چی از ورودی ها باشه؟

لینک به ارسال

کد خودتونو به صورت زیر تغییر بدید

			    $sql="select * from $tbl_name where username='$username'";

$result= mysql_query($sql,$db_link);
if ($result==false)
{
die(mysql_error());
}
$count=mysql_num_rows($result);

توجه داشته باشید وقتی میخواهید یک مقدار رشته string رو درون کوئری قرار بدید باید داخل کوت قرار بگیره

  • امتیاز 2
لینک به ارسال

من فکر میکنم ممکنه مشکل از متغییر های اتصال به دیتابیس (نام کاربری و پسورد) مشکل داشته باشه :


$host_username="root";
$host_password="";

یه نام کاربری جدید با یه پسورد ایجاد و تست کنید ...

  • امتیاز 1
لینک به ارسال

من فکر میکنم ممکنه مشکل از متغییر های اتصال به دیتابیس (نام کاربری و پسورد) مشکل داشته باشه :


$host_username="root";
$host_password="";

یه نام کاربری جدید با یه پسورد ایجاد و تست کنید ...

برای عضویت این فرم فقط اون خطا رو میده اما برای سایر کارها خطایی نمیده . میشه وارد شد . تو صفحه ها رفت از سشن هم استفاده کردم که اون هم درسته و کار میکنه اما وقتی عضو میشم اون خطا رو میده

لینک به ارسال

برای ثبت کاربر جدید نیازی به این موارد نیست ، خود وردپرس یه سری توابع داره ، این یه نمونش : http://www.sutanaryan.com/wordpress-custom-registration-without-using-a-plugin/

برای لوگین هم : http://www.sutanaryan.com/wordpress-custom-login-page-without-using-a-plugin-the-right-way/

  • امتیاز 1
لینک به ارسال

کد خودتونو به صورت زیر تغییر بدید

			 $sql="select * from $tbl_name where username='$username'";

$result= mysql_query($sql,$db_link);
if ($result==false)
{
die(mysql_error());
}
$count=mysql_num_rows($result);

توجه داشته باشید وقتی میخواهید یک مقدار رشته string رو درون کوئری قرار بدید باید داخل کوت قرار بگیره

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


if ($result==false)
{
die(mysql_error());
}

این رو چرا اضافه کنم به کدهام ؟

برای ثبت کاربر جدید نیازی به این موارد نیست ، خود وردپرس یه سری توابع داره ، این یه نمونش : http://www.sutanarya...using-a-plugin/

برای لوگین هم : http://www.sutanarya...-the-right-way/

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

لینک به ارسال

اگه کوئری شما به هر دلیلی مشکل داشته باشه یا در حین اجرا خطایی پیش بیاد تابع mysql_query مقدار false برمیگردونه که باعث ایجاد خطا و اشکال در تابع mysql_num_rows میشه برای جلوگیری از این حالت از کد زیر استفاده شده

if ($result==false)
{
die(mysql_error());
}

  • امتیاز 2
لینک به ارسال

لطفا برای ارسال دیدگاه وارد شوید

شما بعد از اینکه وارد حساب کاربری خود شدید می توانید دیدگاهی ارسال کنید



ورود به حساب کاربری
×
×
  • اضافه کردن...