PDA

View Full Version : خطای نامعلوم کد درباره if



farshad_momtaz
دوشنبه 23 شهریور 1388, 05:50 صبح
سلام
من کد زیر را نوشتم برای ثبت نام توی وبسایتم موقع اجرای این کد در هر صورتی کد های توی دستور if را اجرا می کنه حتی اگر if درست نباشه!
و یه سوال آیا قسمتی که که یک جدول توی دیتابیس برای کاربر درست می کنه درسته؟! من می خوام نام جدول به این صورت باشه UI_نام کاربر
کد صفحه پی اچ پی برای فرستادن اطلاعات

<!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" dir="ltr" lang="en-US" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<title>Login </title>

<script type="text/javascript" src="script.js"></script>

<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
<!--[if IE 6]><link rel="stylesheet" href="style.ie6.css" type="text/css" media="screen" />
<![endif]-->
</head>
<body>
<div class="PageBackgroundSimpleGradient">
</div>
<div class="Main">
<div class="Sheet">
<div class="Sheet-tl"></div>
<div class="Sheet-tr"><div></div></div>
<div class="Sheet-bl"><div></div></div>
<div class="Sheet-br"><div></div></div>
<div class="Sheet-tc"><div></div></div>
<div class="Sheet-bc"><div></div></div>
<div class="Sheet-cl"><div></div></div>
<div class="Sheet-cr"><div></div></div>
<div class="Sheet-cc"></div>
<div class="Sheet-body">
<div class="Header">
<div class="Header-png"></div>
<div class="Header-jpeg"></div>
<div class="logo">
<h1 id="name-text" class="logo-name"><a href="#">Headline</a></h1>
<div id="slogan-text" class="logo-text">Slogan text</div>
</div>
</div>
<div class="nav">
<ul class="artmenu">
<li><a href="index.html" class=" active"><span><span>Home</span></span></a></li>
<li><a href="blog/index.php"><span><span>Daily News</span></span></a>
</li>
<li><a href="#"><span><span>Purchase Bids</span></span></a></li>
<li><a href="#"><span><span>Weekly Drawing</span></span></a>
</li>
<li><a href="#"><span><span>Sell Your Items</span></span></a></li>
<li><a href="#"><span><span>Your Control panel</span></span></a></li>
<li><a href="#"><span><span>Contact Us</span></span></a></li>
</ul>
<div class="l">
</div>
<div class="r">
<div>
</div>
</div>
</div>
<div class="contentLayout">

<div class="content">
<div class="Post">
<div class="Post-body">
<div class="Post-inner">
<div class="PostContent">

<table class="table" width="100%">
<tr>
<td width="33%" valign="top">
<div class="Block">
<div class="Block-body">
<div class="BlockHeader">
<!--div class="header-tag-icon"-->
<div class="BlockHeader-text">
<center>registration</center>
</div>

<!--/div-->
<div class="l"> </div>
<div class="r">
<div></div></div></div>
<div class="BlockContent">
<div class="PostContent">
<form method="POST" id="newsletterform" action="register.php">
<fieldset style="padding: 2">
<legend>General
information</legend>
name: <input type="text" name="uname" size="20">
<p>password: <input type="text" name="password" size="20">
<p>password confirmation: <input type="text" name="passwordc" size="20"></p>
<p>email: <input type="text" name="email" size="20"></p>
<p>email confirmation: <input type="text" name="emailc" size="20"></p>

</fieldset></p>
<fieldset style="padding: 2">
<legend>Contenting
information</legend>
phone: <input type="text" name="phone" size="20"><p>
addressee: <input type="text" name="addrese" size="20"></p>
<p>state: <textarea rows="1" name="state" cols="8"></textarea></p>
<p>city: <input type="text" name="city" size="20"></p>
<p>zip:<input type="text" name="zip" size="20"></p>
</fieldset></p>
<fieldset style="padding: 2">
<legend>Term of Use</legend>
by clicking on the
register button you have
accepted all terms of
use.</fieldset></p>
<button class="Button" type="submit" name="submit">
<span class="btn">
<span class="t">register</span>
<span class="r"><span></span></span>
<span class="l"></span>
</span>
</button>

</form></div>
</div></div></div></td>
</tr>
<tr>
<td width="33%" valign="top">
&nbsp;</td>
</tr>
</table>

</div>
<div class="cleared"></div>
</div>

</div>
</div>
<div class="Post">
<div class="Post-body">
<div class="Post-inner">
<div class="cleared"></div></div></div>
</div>
</div>
</div>
<div class="cleared"></div><div class="Footer">
<div class="Footer-inner">
<a href="#" class="rss-tag-icon" title="RSS"></a>
<div class="Footer-text">
<p><a href="#">Contact Us</a> | <a href="#">Terms of Use</a> | <a href="#">Trademarks</a>
| <a href="#">Privacy Statement</a><br />
Copyright &copy; 2009 ---. All Rights Reserved.</p>
</div>
</div>
<div class="Footer-background"></div>
</div>
</div>
</div>

</body>
</html>
این هم کد پی اچ پی:


<?php



$uname = $_POST['uname'];
$password = $_POST['password'];
$password = $_POST['passwordc'];
$email = $_POST['email'];
$emailc = $_POST['emailc'];
$phone = $_POST['phone'];
$addrese = $_POST['addrese'];
$state = $_POST['state'];
$city = $_POST['city'];
$zip = $_POST['zip'];

if (strlen($uname) == 0 or strlen($password) == 0 or strlen($email) == 0 or strlen($phone) == 0 or strlen($addrese) == 0 or strlen($state) == 0 or strlen($city) == 0 or strlen($zip))
{
echo "Go back and fill all fields !";
exit;
}
if ('$password' != '$passwordc')
{
echo "Password and Password confirmation are not same.";
exit;
}
if ($email != $emailc)
{
echo " email and email confirmation are not same.";
exit;
}
$db = mysql_connect("localhost", "efreeauc_efa", "poilkm37");
if(!$db)
{
echo " Error : cannot open connection.Please try later.";
exit;
}
mysql_select_db('efreeauc_efa');
$query = 'select * from users '
."where username='$username'";
$result = mysql_query($query, $db_conn);
if (mysql_num_rows($result) >0 )
{
echo "This username is taken please chose another username";
exit;
}
$query = 'select * from users '
."where email='$email'";
$result = mysql_query($query, $db_conn);
if (mysql_num_rows($result) >0 )
{
echo "This emial already exist in our data base please restore your password or login.";
exit;
}
$query = " insert into users
(username, password, email, adresse, state, city, zip, phone) values
('".$username."', '". $password."', '".$email."' ,'".$addrese."' , '".$state."' , '".$city."' , '".$zip."' , '".$phone."' )";
$result = mysql_query($query);
if($result)
echo mysql_affected_rows(). '<b> information has been entered.</b>';
$query = " create table uab_'$username'
(adate DATE,
item TEXT,
id INT
)";
$result = mysql_query($query);
if($result)
echo mysql_affected_rows(). '<b> UAB table was made.</b>';
$query = " create table ui_'$username'
(adate DATE,
item TEXT,
id INT,
nob INT
)";
$result = mysql_query($query);
if($result)
echo mysql_affected_rows(). '<b> UI table was made.<br> registeretion is done.</b>';

mysql_close($db);

?>

خیلی ممنون

امیـرحسین
دوشنبه 23 شهریور 1388, 18:31 عصر
کدوم IF رو همیشه اجرا می کنه؟

farshad_momtaz
دوشنبه 23 شهریور 1388, 20:05 عصر
if اولی را و اگر من if اولی را پاک کنم دومی را اجرا می کنه و اگر دومی را پاک کنم سومی!!
همین مشکل را هم توی کد زیر هم دارم!!

<?php
if (isset($HTTP_SESSION_VARS['efaun']))
{
?>
<form method="POST" action="cumail.php">
<p align="center">Subject: <input type="text" name="subject" size="20"><br></p>
<p align="center"><textarea rows="18" name="main" cols="75"></textarea></p>
<p align="center"><input type="submit" value="Submit" name="B1"><input type="reset" value="Reset" name="B2"></p>
</form>
<?
}
else
echo "<b> You have to login first.</b>";
?>

امیـرحسین
دوشنبه 23 شهریور 1388, 21:18 عصر
IF اول چون از OR استفاده کرده، پس همه متغیرها حتما باید پر شده باشند تا اجرا نشه.
IF دوم حتما اجرا میشه چون password$ مشخص شده ولی passwordc$ هیچ جا ساخته نشده و NULL هست پس همیشه با هم برابر نیستند و شرط TRUE هست.
IF سوم هم برابری دو تا فیلده که به محتوای فرم بستگی داره.

درباره IF آخر. تابع isset فقط زمانی FALSE میده که متغیر هیچ جا تعریف نشده باشه یا مقدارش NULL باشه. اگر این عنصر رو برای آرایه SESSION تعیین کرده باشید (حتی خالی "")، PHP همچین چیزی رو داره:
$HTTP_SESSION_VARS['efaun'] = "";

بجای isset، از empty استفاده کنید و همینطور بجای HTTP_SESSION_VARS از SESSION_$ :
if( !empty($_SESSION['efaun']) )

farshad_momtaz
سه شنبه 24 شهریور 1388, 02:21 صبح
ممنون کد آخری درست شد ولی هنوز اولی مشکل داره کد را عوش کردم به صورت زیر ولی دیگه اصلا خالی بود فیلد ها رو چک نمی کنه و باز هم پسورد ها رو می گه یکی نیست! می شه لطفا کد را تصحیح کنید

<?php



$uname = $_POST['uname'];
$password = $_POST['password'];
$passwordc = $_POST['passwordc'];
$email = $_POST['email'];
$emailc = $_POST['emailc'];
$phone = $_POST['phone'];
$addrese = $_POST['addrese'];
$state = $_POST['state'];
$city = $_POST['city'];
$zip = $_POST['zip'];

if (strlen($uname) == 0 && strlen($password) == 0 && strlen($email) == 0 && strlen($phone) == 0 && strlen($addrese) == 0 && strlen($state) == 0 && strlen($city) == 0 && strlen($zip))
{
echo "Go back and fill all fields !";
exit;
}
if ('$password' != '$passwordc')
{
echo "Password and Password confirmation are not same.";
exit;
}
if ($email != $emailc)
{
echo " email and email confirmation are not same.";
exit;
}
$db = mysql_connect("localhost", "efreeauc_efa", "poilkm37");
if(!$db)
{
echo " Error : cannot open connection.Please try later.";
exit;
}
mysql_select_db('efreeauc_efa');
$query = 'select * from users '
."where username='$username'";
$result = mysql_query($query, $db_conn);
if (mysql_num_rows($result) >0 )
{
echo "This username is taken please chose another username";
exit;
}
$query = 'select * from users '
."where email='$email'";
$result = mysql_query($query, $db_conn);
if (mysql_num_rows($result) >0 )
{
echo "This emial already exist in our data base please restore your password or login.";
exit;
}
$query = " insert into users
(username, password, email, adresse, state, city, zip, phone) values
('".$username."', '". $password."', '".$email."' ,'".$addrese."' , '".$state."' , '".$city."' , '".$zip."' , '".$phone."' )";
$result = mysql_query($query);
if($result)
echo mysql_affected_rows(). '<b> information has been entered.</b>';
$query = " create table uab_'$username'
(adate DATE,
item TEXT,
id INT
)";
$result = mysql_query($query);
if($result)
echo mysql_affected_rows(). '<b> UAB table was made.</b>';
$query = " create table ui_'$username'
(adate DATE,
item TEXT,
id INT,
nob INT
)";
$result = mysql_query($query);
if($result)
echo mysql_affected_rows(). '<b> UI table was made.<br> registeretion is done.</b>';

mysql_close($db);

?>
و به قیر از اون آیا این پارت از کد بالا درسته؟

$query = " create table uab_'$username'
(adate DATE,
item TEXT,
id INT
)";
یک دنیا ممنون

امیـرحسین
سه شنبه 24 شهریور 1388, 03:38 صبح
این کد رو بالای اسکریپت قرار بدید:
if($_POST['password'] == $_POST['passwordc'])
echo "{$_POST['password']} == {$_POST['passwordc']}";
else
{
echo "{$_POST['password']} != {$_POST['passwordc']}<br />";

$compare = strcmp($_POST['password'], $_POST['passwordc']);
if($compare == 0)
echo "Length: {$_POST['password']} == {$_POST['passwordc']}";
elseif($compare > 0)
echo "Length: {$_POST['password']} > {$_POST['passwordc']}";
else
echo "Length: {$_POST['password']} < {$_POST['passwordc']}";
}

echo '<pre>';
var_dump($_POST);
خروجی رو مطالعه کنید. اگر مشکل حل نشد، خروجی رو عیننا اینجا قرار بدید.

farshad_momtaz
سه شنبه 24 شهریور 1388, 04:31 صبح
این خروجی هستش

fdm == fdmarray(11) {
["uname"]=>
string(5) "admin"
["password"]=>
string(3) "fdm"
["passwordc"]=>
string(3) "fdm"
["email"]=>
string(23) "admin@efreeauctions.com"
["emailc"]=>
string(23) "admin@efreeauctions.com"
["phone"]=>
string(10) "9493333264"
["addrese"]=>
string(11) "4 elderglen"
["state"]=>
string(2) "ca"
["city"]=>
string(6) "irvine"
["zip"]=>
string(5) "92612"
["submit"]=>
string(0) ""
}
Password and Password confirmation are not same.

امیـرحسین
سه شنبه 24 شهریور 1388, 16:15 عصر
من چه پرتم!
اون شر پسورد معلومه همیشه TRUE هست چون داره دو تا string رو مقایسه می کنه نه متغیر! شرط زیر داره دو تا کلمه که با $ شروع شده اند رو با هم مقایسه می کنه:
if ('$password' != '$passwordc')

شما متغیرها رو توی کوتیشن قرار دادید و PHP اونها رو string در نظر گرفته. یا باید داخل دابل کوتیشن بذارید یا کلا از کوتیشن و دابل کوتیشن استفاده نکنید:
if ("$password" != "$passwordc") OR if ($password != $passwordc)

farshad_momtaz
سه شنبه 24 شهریور 1388, 23:36 عصر
من دیگه واقعا دارم دیونه می شم هر کاری می کنم این کد کار نمی کنه!!!!:گیج::عصبانی++::عصبانی++:
حالا جدیدا اصلا دیگه هیچ چیزی روی صحفه نمی یاد صحفه سفید می یاد
می شه لطفا یه نگاه کامل به این کد بندازید این کد قراره که هم ایمیل و یوزر را چک کنه که تکراری نباشه و یه ایمیل خوش آمد بفرسته و دو تا جدول به نام ها

number 1: UI_username
and
number 2: UAB_usename

که یوزر نیم نام کاربری کاربر باشه بسازه و هم اطلاعات کاربر را توی جدول ها بزاره!
ممنون

امیـرحسین
چهارشنبه 25 شهریور 1388, 05:52 صبح
از اول شروع کنید. خط به خط اطلاعات رو با die و دستورات دیگه چک کنید ببنید اسکرپیت چجوری داره عمل می کنه. مثلا اگر شرط اول اجرا میشه، یعنی یکی از فیلدها خالیه پس اطلاعات POST رو بجای پیغام خطاش چاپ کنید تا ببنید کجاش ایراد داره. دستورات insert رو هم با die چک کنید ببنید کجا متوقف میشه.
اینجور که به نظر میاد، توی دستورات SQL متوقف شده و چون همه خروجی ها به متغیر result وابسته اند، پس اگر result نباشه، صفحه سفید خواهد بود.....

farshad_momtaz
چهارشنبه 25 شهریور 1388, 21:26 عصر
rastesh a bekhayin nemidonam bayad chetori on karo konam,yani gije gij shodam!!!



mitone lotman kesi komakam kone?!! in khili moheme koli az barname aghab oftadam,

+ bebakhshid baraye english neveshtanam