دسته بندی
دسترسی سریع
نحوه ذخیره کردن اطلاعات با دستور INSERT در MySQL
ارتباط با پایگاه داده MySQL
ساخت جدول و ستون ها
شیوه نگارش (Syntax) دستور INSERT
ذخیره مقادیر با دستور INSERT INTO در دیتابیس
ایمن سازی مقادیر ورودی به دیتابیس در اکستنشن MySQLi
ایمن سازی پارامترها با تابع mysqli_real_escape_string
ایمن سازی پارامترها با Prepared Statement و Bind Param
ارتباط با پایگاه داده MySQL
ساخت جدول و ستون ها
شیوه نگارش (Syntax) دستور INSERT
ذخیره مقادیر با دستور INSERT INTO در دیتابیس
ایمن سازی مقادیر ورودی به دیتابیس در اکستنشن MySQLi
ایمن سازی پارامترها با تابع mysqli_real_escape_string
ایمن سازی پارامترها با Prepared Statement و Bind Param
نحوه ذخیره کردن اطلاعات با دستور INSERT در MySQL

پس از آشنایی با نحوه ساخت دیتابیس، جدول و ستون با دستور CREATE در پایگاه داده MySQL و به کمک اکستنشن MySQLi، اکنون نوبت فراگیری قابلیت متداول دیگری از این سیستم مدیریت پایگاه داده است، هدف از این آموزش آشنایی با نحوه درج اطلاعات از طریق کدهای PHP با دستور INSERT INTO در جداول و ستون های MySQL است، قاعدتا صرف ساخت پایگاه داده، جدول و ستون کاربرد عملی نخواهد داشت و همه ی این مقدمات برای فراهم کردن شرایطی است که بتوانیم اطلاعاتمان را پیش از هر کار دیگری ذخیره سازی و در مواقع لزوم از آنها استفاده نمائیم، در واقع می توان گفت ذخیره سازی اطلاعات اولین مرحله تعامل با داده ها در دیتابیس است.
ارتباط با پایگاه داده MySQL
در آموزش های قبل گفتیم که قبل از انجام هر کاری ابتدا باید به پایگاه داده MySQL متصل شویم، طبق روال آموزش ها برای این کار از اکستنشن MySQLi و کدی مشابه به مثال زیر استفاده می کنیم.
برنامه نویسی رویه ای (Procedural):
<?php
//اتصال به دیتابیس
$conn = mysqli_connect("localhost", "username", "password", "dbname");
if(!$conn) {
echo "PHP & MySQL Connection: Error! " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
exit;
} else {
echo "PHP & MySQL Connection: Ok!<br>";
}
//پایان اتصال
mysqli_close($conn);
?>
برنامه نویسی شی گرا (Object-oriented):<?php
//اتصال به دیتابیس
$conn = new mysqli("localhost", "username", "password", "dbname");
if(!$conn) {
echo "PHP & MySQL Connection: Error! " . $conn->errno . ' - ' . $conn->error;
exit;
} else {
echo "PHP & MySQL Connection: Ok!<br>";
}
//پایان اتصال
$conn->close();
?>
در این نمونه کد فرض بر این است که از قبل دیتابیسی با نام dbname را ساخته ایم (برای آشنایی با نحوه ساخت دیتابیس لطفا به آموزش قبل مراجعه کنید)، برای تکمیل کد نیز پرس و جوی ایجاد جدول فرضی books و ستون های id، book و level را در ادامه اجرا می کنیم.ساخت جدول و ستون ها
قبل از INSERT اطلاعات، در پایگاه داده dbname جدولی فرضی با نام books می سازیم تا لیست چند کتاب و سطح آنها را جهت تست و به عنوان نمونه در ستون های book و level ذخیره کنیم، برای این منظور ابتدا با دستور CREATE جدول و ستون ها را ایجاد می کنیم (گفتیم که علاوه بر دستورات PHP، ایجاد دیتابیس، جدول و ستون از طریق رابط کاربری برنامه phpMyAdmin نیز امکانپذیر است).
برنامه نویسی رویه ای (Procedural):
<?php
//اتصال به دیتابیس
$conn = mysqli_connect("localhost", "username", "password", "dbname");
if(!$conn){
echo "PHP & MySQL Connection: Error! " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
exit;
} else {
echo "PHP & MySQL Connection: Ok!<br>";
//ساخت جدول و ستون ها
$sql = "CREATE TABLE books(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
book VARCHAR(255),
level VARCHAR(255))
ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_persian_ci";
$query = mysqli_query($conn, $sql);
if(!$query) {
echo "Creating Table books: Error! " . mysqli_error($conn);
} else {
echo "Creating Table books: OK!";
}
}
//پایان اتصال
mysqli_close($conn);
?>
برنامه نویسی شی گرا (Object-oriented):<?php
//اتصال به دیتابیس
$conn = new mysqli("localhost", "username", "password", "dbname");
if(!$conn) {
echo "PHP & MySQL Connection: Error! " . $conn->errno . ' - ' . $conn->error;
exit;
} else {
echo "PHP & MySQL Connection: Ok!<br>";
//ساخت جدول و ستون ها
$sql = "CREATE TABLE books(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
book VARCHAR(255),
level VARCHAR(255))
ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_persian_ci";
$conn->query($sql);
if(!$conn) {
echo "Creating Table books: Error! " . $conn->error;
} else {
echo "Creating Table books: OK!";
}
}
//پایان اتصال
$conn->close();
?>
توضیح:- اطلاعات اتصال را با توجه به نام کاربری، کلمه عبور و عنوان پایگاه داده خود در تابع mysqli_connect (برنامه نویسی رویه ای) یا کلاس mysqli (برنامه نویسی شی گرا) تعریف می کنیم (نام کاربری در localhost معمولا root و بدون کلمه عبور است).
- در مثال بالا جدولی فرضی با نام books ساخته و سه ستون در آن ایجاد کرده ایم (id, book, level)، ستون id به صورت INT عددی و افزایش خودکار (AUTO_INCREMENT) و ستون های book و level از نوع VARCHAR متنی هستند که برای ذخیره سازی متن های کوتاه (در اینجا تا 255 بایت) کاربرد دارند.
- INT و VARCHAR نوع داده (Data Types) ای هستند که در ردیف ها قابل ذخیره سازی است، این امکان در MySQL وجود دارد که از مقادیر INT برای اعداد، VARCHAR برای متن های کوتاه با مقادیر مشخص یا نوع داده TEXT، MEDIUMTEXT، LONGTEXT برای متن های طولانی استفاده کنیم (در این خصوص در آموزش های آینده مفصلا صحبت خواهیم کرد).
- مقادیر NOT NULL و AUTO_INCREMENT جزء ویژگی هایی هستند که هر نوع از داده ای مقادیر بخصوص خود را می تواند داشته باشد، به طور مثال برای INT که یک مقدار عددی است خاصیت AUTO_INCREMENT به معنی افزایش خودکار کاربرد دارد و افزایش خودکار یعنی با هر بار INSERT اطلاعات در جدول، یک مقدار به ستون مورد نظر (معمولا id) به صورت خودکار اضافه خواهد شد (شمارش پیش فرض از 1، 2، 3 و...) و نیازی به درج این مقدار به صورت دستی نیست، همچنین NOT NULL یعنی مقدار پیش فرض ستون ها NULL نیست و در صورتی که هنگام INSERT اطلاعات برای آن ستون مقداری در نظر نگیریم، مقدار خالی (به جای عبارت NULL) درج خواهد شد.
شیوه نگارش (Syntax) دستور INSERT
برای اجرای دستور INSERT می توانیم از دو شیوه نگارش استفاده و نام جدول و ستون ها را با دو Syntax زیر بنویسیم:
INSERT INTO tbl(col_1, col_2) VALUES('value_1', 'value_2')
INSERT INTO `tbl`(`col_1`, `col_2`) VALUES('value_1', 'value_2')
تفاوت روش دوم (استفاده از علامت ` backquote یا backtick) با حالت عادی در این است که با این کار در صورتی که از فضای خالی یا عبارات محفوظ MySQL به عنوان نام جدول یا ستون ها استفاده کنیم برنامه با خطای ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near...
یا خطاهای مشابه مواجه نمی شود، در هر صورت بهتر است از فضای خالی یا عبارات محفوظ برای نام جدول و ستون ها استفاده نشود:https://dev.mysql.com/doc/refman/5.5/en/keywords.html
در آدرس بالا لیست این عبارات به تفکیک حروف الفبای انگلیسی درج شده است.ذخیره مقادیر با دستور INSERT INTO در دیتابیس
پس از ساختن جدول و ستون، اکنون می خواهیم جهت نمونه نام سه کتاب فرضی آموزش HTML، آموزش PHP و آموزش MySQL را به لیست خود اضافه کنیم، بدین منظور از کدی مشابه مثال زیر استفاده می کنیم.
برنامه نویسی رویه ای (Procedural):
<?php
//اتصال به دیتابیس
$conn = mysqli_connect("localhost", "username", "password", "dbname");
if(!$conn){
echo "PHP & MySQL Connection: Error! " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
exit;
} else {
echo "PHP & MySQL Connection: Ok!<br>";
//سازگاری با حروف فارسی
$sql = "SET NAMES 'utf8'";
$query = mysqli_query($conn, $sql);
//ساخت جدول و ستون ها
$sql = "CREATE TABLE books(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
book VARCHAR(255),
level VARCHAR(255))
ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_persian_ci";
$query = mysqli_query($conn, $sql);
if(!$query) {
echo "Creating Table books: Error! " . mysqli_error($conn) . '<br>';
} else {
echo "Creating Table books: OK!<br>";
//ذخیره نمونه اطلاعات در جدول
$sql = "INSERT INTO books(book, level) VALUES('آموزش HTML', 'مقدماتی')";
$query = mysqli_query($conn, $sql);
$sql = "INSERT INTO books(book, level) VALUES('آموزش PHP', 'مقدماتی')";
$query = mysqli_query($conn, $sql);
$sql = "INSERT INTO books(book, level) VALUES('آموزش MySQL', 'پیشرفته')";
$query = mysqli_query($conn, $sql);
if(!$query) {
echo "Inserting Into Table books: Error! " . mysqli_error($conn);
} else {
echo "Inserting Into Table books: OK!";
}
}
}
//پایان اتصال
mysqli_close($conn);
?>
برنامه نویسی شی گرا (Object-oriented):<?php
//اتصال به دیتابیس
$conn = new mysqli("localhost", "username", "password", "dbname");
if(!$conn) {
echo "PHP & MySQL Connection: Error! " . $conn->errno . ' - ' . $conn->error;
exit;
} else {
echo "PHP & MySQL Connection: Ok!<br>";
//سازگاری با حروف فارسی
$sql = "SET NAMES 'utf8'";
$conn->query($sql);
//ساخت جدول و ستون ها
$sql = "CREATE TABLE books(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
book VARCHAR(255),
level VARCHAR(255))
ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_persian_ci";
$conn->query($sql);
if(!$conn) {
echo "Creating Table tblname: Error! " . $conn->error;
} else {
echo "Creating Table tblname: OK!<br>";
//ذخیره نمونه اطلاعات در جدول
$sql = "INSERT INTO books(book, level) VALUES('آموزش HTML', 'مقدماتی')";
$conn->query($sql);
$sql = "INSERT INTO books(book, level) VALUES('آموزش PHP', 'مقدماتی')";
$conn->query($sql);
$sql = "INSERT INTO books(book, level) VALUES('آموزش MySQL', 'پیشرفته')";
$conn->query($sql);
if(!$conn) {
echo "Inserting Into Table books: Error! " . $conn->error;
} else {
echo "Inserting Into Table books: OK!";
}
}
}
//پایان اتصال
$conn->close();
?>
توضیح:- چنانچه پیش از این جدول books را ساخته باشیم با اجرای پرس و جوی بالا خطای
Creating Table books: Error! Table 'books' already exists
را دریافت خواهیم کرد، دلیل این خطا وجود جدول هم نام و تلاش برای ایجاد مجدد آن است، برای رفع این مشکل از طریق برنامه phpMyAdmin که معمولا در سرور مجازی با درج آدرس http://localhost/phpmyadmin
در دسترس است، جدول موجود را Drop می کنیم (اصطلاح Drop در پایگاه داده معادل حذف و Delete است).- هر دستور INSERT INTO مقادیر را در یک ردیف از ستون های تعیین شده ذخیره می کند، در این نمونه کد مقادیر به صورت مستقیم درج شده اند و از نظر امنیتی بررسی خاصی روی آنها صورت نگرفته است، در برنامه های کاربردی لازم است که هر نوع ورودی استفاده شده در پرس و جوهای دیتابیس قبل از هرچیز ایمن سازی شوند تا از نفوذ و خرابکاری احتمالی در پایگاه داده جلوگیری شود (در ادامه نکاتی که جهت حفظ امنیت دیتابیس باید رعایت کنیم را بررسی خواهیم کرد).
- در مواردی که اطلاعات به صورت مقادیر چندگانه و آرایه ای هستند بهتر است جهت مختصر نویسی و کدنویسی بهینه دستور INSERT را در حلقه ی while یا for قرار دهیم، در مثال بالا جهت جلوگیری از پیچیده شدن مبحث این کار صورت نگرفته است اما در برنامه نویسی حرفه ای تا حد امکان باید سعی کنیم مختصر و مفید کدنویسی کنیم!
- جهت سازگاری کامل جداول پایگاه داده با حروف زبان فارسی لازم است که علاوه بر تعیین utf8 به عنوان DEFAULT CHARACTER SET و utf8_persian_ci به عنوان COLLATE پیش فرض، پرس جوی زیر را هم پس از اتصال به دیتابیس اجرا کنیم:
SET NAMES 'utf8'
- فراموش نکنیم که پس از پایان اجرای پرس و جوها بهتر است از تابع mysqli_close استفاده کنیم تا از آزادسازی منابع سرور مطمئن شویم.ایمن سازی مقادیر ورودی به دیتابیس در اکستنشن MySQLi
یکی از نکات کلیدی که برنامه نویسان وب در هنگام کار با سیستم های مدیریت پایگاه داده باید حتما به آن توجه داشته باشند حفظ امنیت کدها و جلوگیری از نفوذ به دیتابیس است، از جمله روش های متداول هکرها حملات موسوم به SQL Injection یا تزریق و اضافه کردن دستورات به مقادیری است که به عنوان ورودی از سمت کاربر دریافت و در پرس و جوهای سرور جایگزین می شوند، با توجه به مقدماتی بودن سطح این سری از آموزش ها از توضیح چگونگی این حملات خودداری می کنیم و در ادامه صرفا با نحوه مقابله با آنها در اکستنشن MySQLi آشنا خواهیم شد.
نخستین گام در جهت حفظ امنیت دیتابیس عدم درج مستقیم هرگونه مقادیری است که از سمت کاربر دریافت می شود، برای این منظور در روش برنامه نویسی رویه ای (Procedural) از تابع mysqli_real_escape_string و در برنامه نویسی شی گرا (Object-oriented) از Prepared Statement و Bind Param استفاده می کنیم.
ایمن سازی پارامترها با تابع mysqli_real_escape_string
یکی از روش های متداول ایمن سازی پارامترها در برنامه نویسی رویه ای (Procedural) استفاده از تابع mysqli_real_escape_string است، با این تابع می توانیم مقادیر ورودی از سمت کاربر را قبل از استفاده در پرس و جوی دیتابیس به لحاظ وجود کاراکترهای زیر ایمن سازی کنیم:
NUL (ASCII 0)
\n
\r
\
'
"
Control-Z
این دسته از کاراکترها نباید به عنوان ورودی خام و به صورت پارامتر مستقیم در پرس و جوها استفاده شوند، به طور مثال اگر دستور INSERT در پرس و جوی ما به شکل زیر باشد://ذخیره نمونه اطلاعات در جدول
$book = 'PHP';
$level = 'pro';
$sql = "INSERT INTO books(book, level) VALUES('$book', '$level')";
و به فرض هکر مقدار متغیر level را از فرمی در صفحه HTML به این صورت ارسال کند:$level = 'pro\'';
پرس و جویی نهایی به شکل زیر (با کاراکتر ' اضافه) خواهد بود:INSERT INTO books(book, level) VALUES('PHP', 'pro'')
کمترین اتفاقی که در این حالت ممکن است رخ دهد از کار افتادن برنامه و دریافت خطای زیر است:Inserting Into Table books: Error! You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''pro'')' at line 1
بروز خطا این پیام را به هکر می دهد که ایمن سازی پارامترها در پرس و جوهای دیتابیس به درستی صورت نگرفته و کدها قابل نفوذ هستند، به همین جهت برای در امان بودن از این نوع خطرات باید قبل از استفاده از پارامترها در پرس و جو آنها را از تابع mysqli_real_escape_string عبور دهیم://ذخیره نمونه اطلاعات در جدول
$book = mysqli_real_escape_string($conn, 'PHP');
$level = mysqli_real_escape_string($conn, 'pro\'');
$sql = "INSERT INTO books(book, level) VALUES('$book', '$level')";
این تابع دو آرگیومنت دارد، آرگیومنت اول متغیر (آبجکت) اتصال است و آرگیومنت دوم مقادیری است که می خواهیم به عنوان پارامتر در پرس و جو جایگزین کنیم، برای آشنایی بیشتر با این تابع و دیدن نمونه مثال ها می توانیم به آدرس زیر در سایت php.net رجوع کنیم.php.net/manual/en/mysqli.real-escape-string.php
ایمن سازی پارامترها با Prepared Statement و Bind Param
در برنامه نویسی شی گرا (Object-oriented) علاوه بر متد mysqli_real_escape_string روش توصیه شده دیگری برای ایمن سازی پارامترها تحت عنوان Prepared Statement وجود دارد، در شیوه Prepared Statement ابتدا پرس و جو بدون ارسال پارامترهای ورودی به دیتابیس ارسال می شود (به جای پارامترها علامت ? درج می کنیم) و سپس مقادیر پارامترهای مورد نظر به صورت Bind Param به دیتابیس ارسال شده و در نهایت پرس و جوی نهایی تکمیل و اجرا می شود، با این شیوه بخش دستورات از بخش مقادیر جدا شده و بدین نحو می توانیم حملات SQL Injection را خنثی کنیم، در مثال زیر نمونه کد شی گرائی که در آموزش بررسی کردیم را در قسمت دستور INSERT به شکل زیر ویرایش می کنیم:
//ذخیره نمونه اطلاعات در جدول
$book = 'PHP';
$level = 'pro';
$sql = "INSERT INTO books(book, level) VALUES(?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $book, $level);
$stmt->execute();
همان طور که مشخص است به جای متد query از سه متد prepare، bind_param و execute استفاده کرده ایم، در متد prepare دستور پرس و جو بدون ارسال پارامترها درج شده است (در قسمت VALUES به جای هر پارامتر یک علامت ? جایگزین شده است)، در متد bind_param در آرگیومنت اول به ازای نوع داده (Data Type) هر پارامتر یک حرف s قرار داده ایم، s به معنی String (رشته) است، در اکستنشن MySQLi در کل چهار نوع داده به شرح زیر در قسمت Bind قابل تعریف است:i - Integer
s - String
d - Double
b - Blob
از این چهار نوع معمولا i به معنی Integer (عدد) و s به معنی String (رشته) بیشترین کاربرد را در پرس و جوها دارند.در نهایت با فراخوانی متد execute پرس و جو به نحو کامل اجرا شده و دستور INSERT اعمال می شود.
نکته: در برنامه های کاربردی معمولا مقادیر ورودی با متدهای GET یا POST از سمت کاربر دریافت شده و سپس به متغیرها نسبت داده می شوند، به طور مثال:
$book = $_POST['book'];
$level = $_POST['level'];
در صورت عدم آشنایی با نحوه دریافت پارامترها از سمت کاربر می توانیم به مبحث فرم های وب در HTML و متد GET و POST در PHP مراجعه کنیم.مطالب گفته شده در این آموزش جهت شروع آشنایی با بحث ایمن سازی پارامترها در اکستنشن MySQLi کفایت می کند، در آموزش های پیش رو با توضیحات و مثال های بیشتری از مبحث ایمن سازی پارامترها در برنامه نویسی PHP و MySQL آشنا خواهیم شد.
دسته بندی: آموزش مقدماتی » MySQL
برچسب ها: MySQL

آموزش MySQL، سیستم مدیریت پایگاه داده
انتخاب ردیف ها با دستور SELECT در MySQL
استفاده از WHERE در پرس و جوی MySQL
توابع تجمیعی (Aggregate Functions) در MySQL
حذف مقادیر از MySQL با دستور DELETE
دیدگاه


peyman
۰۱:۵۰ ۱۳۹۴/۰۶/۲۳
درود بر اساتید گرامی
یه مشکل در کد زیر دارم که وقتی حلقه شروع به تکرار میکنه یه سطر اضافه و خالی اول جدولم میاد
یه مشکل در کد زیر دارم که وقتی حلقه شروع به تکرار میکنه یه سطر اضافه و خالی اول جدولم میاد
<?php
// اتصال به پایگاه داده
$con = mysql_connect("localhost", "root", "")or die(mysql_error());
//نام دیتابیس
$select = mysql_select_db("ajanc_db", $con)or die(mysql_error());
mysql_query("set names 'utf8'");
$query="SELECT * FROM acsses";
$select=mysql_query($query);
?>
<table width="50%" border="1">
<tr>
<td width="13%">شماره اشتراک</td>
<td width="15%">نام خانوادگی</td>
<td width="57%">آدرس</td>
<td width="14%">تلفن</td>
</tr>
<?php do{ ?>
<tr>
<td><?php echo $row['id']?></td>
<td><?php echo $row['name']?></td>
<td><?php echo $row['adress']?></td>
<td><?php echo $row['phone']?></td>
</tr>
<?php } while ($row=mysql_fetch_array($select)); ?>
</table>
<?php
mysql_close($con);
?>
برای این منظور نیازی به استفاده از حلقه do while ندارید، این نوع حلقه اولین دور را بدون پیش شرط اجرا می کند و از آنجایی که در دور اول هنوز متغیر row مقداری ندارد، یک سطر خالی چاپ می شود، می توانید درون حلقه while معمولی خروجی خود را چاپ کنید، نمونه های زیادی در وب وجود دارد.
😐 محمد 😐
۱۸:۲۶ ۱۳۹۴/۱۱/۲۰
سلام
فرض کنید ساختار دیتابیس لو نرفته و کسی از نام جداول سطرها و ... خبر نداره در چنین حالتی هکر از دستور mysql_query می تونه سو استفاده کنه؟
مثلا دستوری هست که کل تیبل ها حذف شه
کلا میشه حمله ای در این حالت رخ بده؟
فرض کنید ساختار دیتابیس لو نرفته و کسی از نام جداول سطرها و ... خبر نداره در چنین حالتی هکر از دستور mysql_query می تونه سو استفاده کنه؟
مثلا دستوری هست که کل تیبل ها حذف شه
کلا میشه حمله ای در این حالت رخ بده؟
هرچند در این صورت ضریب امنیت تا حدودی افزایش می یابد و کار هکر سخت تر می شود، اما معمولا هکرها از روش های مختلفی استفاده می کنند که ممکن است نام جداول شما را حدس بزنند! در صورتی که موارد امنیتی و ایمن سازی داده ها قبل از استفاده در پرس و جوی دیتابیس رعایت نشود (این مهمترین فاکتور است)، پرس و جوهایی که در کدهای خود نوشته اید می توانند به نحو ناخواسته ای دستکاری شوند و به فرض اطلاعات جداول حذف گردند، هکرها معمولا از ابزارهای خودکار استفاده می کنند، یعنی در یک لحظه از چنیدن IP مختلف ممکن است به صورت رندوم و با اسامی جداول مختلف، دستور مخرب را به سرور شما ارسال کنند و وجود حفره امنیتی ممکن است باعث نفوذ آنها شود، حتی اگر نام جدول را ندانند!
😐 محمد 😐
۱۵:۲۹ ۱۳۹۴/۱۲/۰۳
سلام خسته نباشید
فکر کنید ما در یک فایل حدود 400 تا function داریم
چه زمانی این فانکشن ها روی سرعت تاثیر میزارن؟
زمانی که مورد استفاده قرار بگیرن؟
در زمانی که ازشون استفاده نشه تاثیری توی سرعت برنامه میزارن؟
فکر کنید ما در یک فایل حدود 400 تا function داریم
چه زمانی این فانکشن ها روی سرعت تاثیر میزارن؟
زمانی که مورد استفاده قرار بگیرن؟
در زمانی که ازشون استفاده نشه تاثیری توی سرعت برنامه میزارن؟
توابع در PHP تا زمانی که فراخوانی نشوند، صرفا توسط مفسر خوانده می شوند و نه پردازش، لذا تنها خطاهای Syntax و... چک می شود که تاثیر خاصی روی سرعت ندارد! البته اینکه برنامه ای در حدود 400 تابع داشته باشد کمی دور از ذهن است و بهتر است توابعی که شباهت زیادی به هم دارند (با اختصاص آرگیومنت های متفاوت و کنترل خروجی) در یک مورد خلاصه شوند!
😐 محمد 😐
۲۱:۲۷ ۱۳۹۴/۱۲/۰۴
سلام ببخشید هی مزاحم میشم
ممنون بابت پاسختون
دمتون گرم
من همیشه سر یه دوراهی هایی قرار می گیرم که وقتی نظر شما رو می پرسم دو راه من میشه یه راه و خیلی کمکم می کنه من به هر بدبختی بود تونستم یه cms خیلی ساده بنویسم
می خوام برای هر مطلب یک ستون توی دیتابیس ایجاد کنم و هر بار که رفرش میشه یه عدد به مقدار درون اون ستون مطلب اضافه کنم من می خوام بدونم بهترین حالت (type) ستون در دیتابیس از نوع چی باشه؟ int خوبه؟ مناسبه؟
جهت افزایش سرعت میگم البته فعلا این قسمته ولی بعد از همین قسمت الگو می گیرم و برای قسمت های دیگه هم استفاده می کنم.
جسارتا برای ذخیره کردن ID مطالب بهتره از چه نوع (Type) استفاده کنم؟ اینم int ؟
ممنون
من حدود 50 / 60 تا سوالمو تو این دو تا سوال خلاصه کردم چون می خوام یه الگو حسابی از این دو سوال برای امکانات دیگه بگیرم
در ضمن دمتون گرم من با همین آموزش های حرفه ای شما راه افتادم هیچ وقت فراموش نمی کنم
موفق باشید
ممنون بابت پاسختون
دمتون گرم
من همیشه سر یه دوراهی هایی قرار می گیرم که وقتی نظر شما رو می پرسم دو راه من میشه یه راه و خیلی کمکم می کنه من به هر بدبختی بود تونستم یه cms خیلی ساده بنویسم
می خوام برای هر مطلب یک ستون توی دیتابیس ایجاد کنم و هر بار که رفرش میشه یه عدد به مقدار درون اون ستون مطلب اضافه کنم من می خوام بدونم بهترین حالت (type) ستون در دیتابیس از نوع چی باشه؟ int خوبه؟ مناسبه؟
جهت افزایش سرعت میگم البته فعلا این قسمته ولی بعد از همین قسمت الگو می گیرم و برای قسمت های دیگه هم استفاده می کنم.
جسارتا برای ذخیره کردن ID مطالب بهتره از چه نوع (Type) استفاده کنم؟ اینم int ؟
ممنون
من حدود 50 / 60 تا سوالمو تو این دو تا سوال خلاصه کردم چون می خوام یه الگو حسابی از این دو سوال برای امکانات دیگه بگیرم
در ضمن دمتون گرم من با همین آموزش های حرفه ای شما راه افتادم هیچ وقت فراموش نمی کنم
موفق باشید
انتخاب نوع داده (Data Type) ستون در دیتابیس بستگی به نیاز یا برآورد شما از حداکثر تعداد مقادیر ردیف هایی دارد که حداقل تا مدتها برنامه را از ایجاد تغییرات در دیتابیس و ساختار، بی نیاز کند، در مورد ستون ID نیز این قضیه صادق است، معمولا برای یک CMS نوع داده INT ترجیحا به صورت Unsigned کفایت می کند، با توجه به اطلاعات جدول زیر، با این نوع داده، می توان 4294967295 ردیف داشت که مسلما رقم کمی نیست و به راحتی به پایان نمی رسد!
http://dev.mysql.com/doc/refman/5.7/en/integer-types.html
پرس و جوی ساخت چنین ردیفی می تواند به شکل نمونه زیر باشد:CREATE TABLE tb_name(id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY)
برای مشاهده انواع مختلف داده و حداکثر مقادیر کاراکتر آنها (حروف فارسی و یونیکد، حجم دو برابر اشغال می کنند) می توانید به صفحه زیر مراجعه کنید:http://dev.mysql.com/doc/refman/5.7/en/data-types.html
😐 محمد 😐
۱۷:۱۵ ۱۳۹۴/۱۲/۱۰
سلام خسته نباشید
میگم امکانش هست فقط از جداول mysql بک آپ گرفت؟
منظورم ساختارشه از داده های ذخیره شده نه فقط از نوع table هاش مثلا فکر کنید جدول من posts , users , categories داره داخل هر کدومم کلی داده فکر کنید باشه
من می خوام فقط این جداولو انتقال بدم به هاست اطلاعات توشو نمی خوام انتقال بدم از طرفی نمی خوام اطلاعاتو حذف کنم می خوام بک آپی بگیرم که جداول posts , users , category بدون محتویاتشون منتقل کنه نمی دونم منظورمو توسنتم برسونم یا نه میشه؟ اگه میشه خب راهنمایی می کنید؟ یا منبعی رو معرفی می کنید؟
میگم امکانش هست فقط از جداول mysql بک آپ گرفت؟
منظورم ساختارشه از داده های ذخیره شده نه فقط از نوع table هاش مثلا فکر کنید جدول من posts , users , categories داره داخل هر کدومم کلی داده فکر کنید باشه
من می خوام فقط این جداولو انتقال بدم به هاست اطلاعات توشو نمی خوام انتقال بدم از طرفی نمی خوام اطلاعاتو حذف کنم می خوام بک آپی بگیرم که جداول posts , users , category بدون محتویاتشون منتقل کنه نمی دونم منظورمو توسنتم برسونم یا نه میشه؟ اگه میشه خب راهنمایی می کنید؟ یا منبعی رو معرفی می کنید؟
برای کپی ساختار یک جدول می توانید پرس و جوی ساده زیر را اجرا کنید:
CREATE TABLE new_tbl LIKE old_tbl;
اما برای کپی ساختار کل دیتابیس باید از برنامه هایی نظیر mysqldump یا محیط MySQL shell استفاده کنید که کاری فنی است!😐 محمد 😐
۰۹:۰۶ ۱۳۹۴/۱۲/۱۲
سلام ممنون
در دستورات کوئری اگر ما دستورات از پیش تعریف شده MYSQL رو بزرگ بنویسیم بهتر یا کوچیک؟
مثلا:
بزرگ نوشته شه یا کوچیک به نظر شما؟
در دستورات کوئری اگر ما دستورات از پیش تعریف شده MYSQL رو بزرگ بنویسیم بهتر یا کوچیک؟
مثلا:
select * from
یاSELECT * FROM
البته تست کردن هر دو اجرا میشنه و هیچ مشکلی ندارهبزرگ نوشته شه یا کوچیک به نظر شما؟
MySQL به صورت پیش فرض نسبت به حروف بزرگ یا کوچک حساس نیست و لذا هر دو حالت قابل استفاده است که انتخاب یک شیوه سلیقه ای است! به نظر ما استفاده از حالت حروف بزرگ برای عبارات دستوری و حروف کوچک برای مواردی مانند نام جداول و ستون ها به خوانا تر شدن کدها کمک می کند، البته این در شرایطی است که بخواهید پروژه از ابتدا نوشته شود، برای کدهایی که از قبل نوشته شده اند، برای این موارد بهتر است از رویه موجود پیروی کنید.
محسن
۱۲:۴۹ ۱۳۹۵/۰۴/۱۲
سلام و خسته نباشید
من برای اتصال به دیتابیس از کد زیر استفاده میکنم :
ممنون میشم در این زمینه راهنمایی کنید
من برای اتصال به دیتابیس از کد زیر استفاده میکنم :
function db_connect()
{
$dbusername = '';
$dbpassword = '';
$dbname = '';
@ $result = new mysqli('localhost',$dbusername,$dbpassword,$dbname);
if(!$result){
throw new Exception('Could not connect to database server');
}
else {
return $result;
}
}
$conn = db_connect();
فرمت دیتابیس من یونیکد هست اما هنگام نمایش اطلاعات عبارات فارسی رو به همریخته نشون میدهممنون میشم در این زمینه راهنمایی کنید
این موضوع به یونیکد و Collation دیتابیس شما بر می گردد، دقت کنید که اگر تمام مراحل زیر را انجام دهید، اطلاعات باید به شکل فارسی در دیتابیس ذخیره و (از طریق برنامه phpMyAdmin) قابل روئیت باشند:
در درجه اول باید Server Connection Collation دیتابیس را
- از متاتگ زیر در تمام صفحات استفاده کنید:
- پس از اتصال با دیتابیس، پرس و جوی زیر را هم اجرا کنید:
در درجه اول باید Server Connection Collation دیتابیس را
utf8_persian_ci
انتخاب کنید، سپس مراحل زیر را انجام دهید:- از متاتگ زیر در تمام صفحات استفاده کنید:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- علاوه بر دیتابیس، جداول و ستون ها را نیز با یونیکدutf8_persian_ci
بسازید.- پس از اتصال با دیتابیس، پرس و جوی زیر را هم اجرا کنید:
mysqli_query($conn, "SET NAMES 'utf8'");
- اگر مشکل همچنان حل نشد، فایل های خود را با ویرایشگر ++Notepad باز کرده و سپس از قسمت Encoding گزینه Encoding UTF-8 without BOM را انتخاب و فایل خود را مجددا ذخیره نمائید.محسن
۱۰:۳۹ ۱۳۹۵/۰۴/۱۴
سلام و عرض ادب
مشکل همچنان پابرجاست
تمامی موارد فوق انجام شد
لازم به ذکر است که اطلاعات داخل دیتابیس فارسی ذخیره میشوند ولی موقع نمایش بهم ریخته هستند
مشکل همچنان پابرجاست
تمامی موارد فوق انجام شد
لازم به ذکر است که اطلاعات داخل دیتابیس فارسی ذخیره میشوند ولی موقع نمایش بهم ریخته هستند
احتمالا به هر دلیل صفحه شما از یونیکد utf-8 استفاده نمی کند، در اینگونه موارد درک مشکل و ارائه راه حل صرفا با تست و بررسی امکانپذیر است!
هدایت
۱۱:۰۰ ۱۳۹۵/۰۶/۱۱
با سلام
من کد زیر رو نوشتم تمام کارهای رو که روی یک دیتابیس هست رو هم انحام میدم یعنی کاربر جدید، حذف ویرایش رو دیتابیس با استفاده از فرمی که در صفحه وب طراحی کردم انجام میده ولی متاسفانه دستور مای اسکیول کانکت mysql_connect رو همیشه بصورت هشدار روی صحفه وب برای من نمایش میده می خواستم اگر زحمتی نیست راهنماییم کنید که چطور میشه کاری کرد که روی صحفه وب من نمایش داده نشه
با تشکر
من کد زیر رو نوشتم تمام کارهای رو که روی یک دیتابیس هست رو هم انحام میدم یعنی کاربر جدید، حذف ویرایش رو دیتابیس با استفاده از فرمی که در صفحه وب طراحی کردم انجام میده ولی متاسفانه دستور مای اسکیول کانکت mysql_connect رو همیشه بصورت هشدار روی صحفه وب برای من نمایش میده می خواستم اگر زحمتی نیست راهنماییم کنید که چطور میشه کاری کرد که روی صحفه وب من نمایش داده نشه
با تشکر
حذف شد
هرچند بهتر بود متن خطای دریافتی را درج می کردید، اما اگر خطا مربوط به استفاده از اکستنش قدیمی MySQL باشد باید سعی کنید کدهایتان را به اکستنشن MySQLi ارتقاء دهید، MySQL شیوه قدیمی PHP برای اتصال با پایگاه داده است و در نسخه های جدید، PHP توصیه می کند که از MySQLi یا PDO استفاده کنید، لذا بهتر است هرآنچه تا کنون یاد گرفته اید را به MySQLi ارتقاء و از این اکستنشن برای کدهای جدید استفاده نمائید، لطفا در وب در خصوص آموزش MySQLi جستجو کنید (تفاوت زیادی بین MySQL و MySQLi نیست و اصول کار به یک شیوه است، اگر MySQL بلد باشید برای کار با MySQLi مشکلی نخواهید داشت!).
مسعود
۱۷:۳۵ ۱۳۹۵/۱۰/۲۴
با سلام
دستوراتی که در بالا گفتین در سیستم من می بایست به این روش فراخوانی بشه
راه حلی داره که بتونم با مثه دستورات شما از دیتابیسم خروجی بگیرم
دستوراتی که در بالا گفتین در سیستم من می بایست به این روش فراخوانی بشه
$connect = mysqli_connect("localhost","rejister","rejister","learn1-2") or die(mysql_error());
$username = $_POST['username'];
$password = $_POST['password'];
$mobile = $_POST['mobile'];
$email = $_POST['email'];
$cuntry = $_POST['cuntry'];
$city = $_POST['city'];
mysqli_query($connect,"INSERT INTO `rejister` (`username`,`password`,`mobile`,`email`,`cuntry`,`city`)
VALUES('".$username."','".$password."','".$mobile."','".$email."','".$cuntry."','".$city."')");
به نظر شما مشکل از نرم افزار زمپ من هست یا مشکل سخت افزاریه؟؟راه حلی داره که بتونم با مثه دستورات شما از دیتابیسم خروجی بگیرم
در کدهای شما از اکستنشن MySQLi استفاده شده لذا شما باید با این اکستنشن و تفاوت آن با MySQL آشنا باشید (لطفا در این رابطه در وب جستجو نمائید)، با اندکی تغییر در دستورات می توانید همین آموزش را با MySQLi پیاده سازی کنید.
سحر
۱۴:۵۱ ۱۳۹۶/۰۴/۲۹
سلام... من میخوام 3 رکورد آخر جدول رو در php استخراج کنم میشه کوئریشو نشونم بدید؟
برای استخراج آخرین اطلاعات از دیتابیس کافی است از ORDER BY در کنار LIMIT استفاده کنید:
SELECT * FROM table ORDER BY id DESC LIMIT 3
پرستو
۱۲:۵۰ ۱۳۹۶/۱۱/۲۸
سلام. ممنون از سایت خوبتون
من هر کاری میکنم سایتم به دیتابیس لوکال متصل نمیشه! از درستی کدها مطمئنم. وقتی فایل رو تو مرورگر باز میکنم یا خود کدهایی که نوشتم و نمایش میده یا اصلا هیچ کاری انجام نمیشه و هیچی نمایش داده نمیشه
من هر کاری میکنم سایتم به دیتابیس لوکال متصل نمیشه! از درستی کدها مطمئنم. وقتی فایل رو تو مرورگر باز میکنم یا خود کدهایی که نوشتم و نمایش میده یا اصلا هیچ کاری انجام نمیشه و هیچی نمایش داده نمیشه
با توجه به توضیحات ظاهرا سرور مجازی شما فعال و در حال اجرا نیست، ابتدا باید مطمئن شوید که برنامه سرور مجازی به درستی نصب شده و فعال باشد، برای این کار دستور PHP زیر را در یک فایل نوشته، در دارکتوری www قرار داده و از طریق مرورگر آن را اجرا کنید، اگر خروجی برابر با 1 باشد یعنی سرور شما فعال است، در غیر این صورت باید مشکل از فعال نبودن برنامه باشد.
<?php
echo 1;
?>
در صورت فعال بودن سرور مجازی می توانید مشکلات مربوط به دیتابیس (ساخت دیتابیس، اختصاص کاربر به دیتابیس، ساخت جدول و ستون، اطلاعات اتصال، کدهای نوشته شده و...) را خطایابی کنید.محمد
۱۲:۰۰ ۱۳۹۶/۱۲/۲۶
سلام میخواستم بپرسم در کد های زیر دقیقا چه اشکالی وجود داره که مقدار های ایمیل و پسورد رو ارسال نمیکنه
<?php
if (isset($_POST['register'])){
$email = $_POST['email'];
$password = $_POST['password'];
$passwordconf = $_POST['password-conf'];
if ($password != $passwordconf){
echo 'پسورد و تکرار با هم مطابقت ندارند';
}else{
mysql_query($conn, "INSERT INTO users (email, password) VALUES ($email, $password)");
echo 'ثبت نام شما با موفقیت انجام شد';
}
}
و چنین خطایی رو میدهFatal error: Uncaught Error: Call to undefined function mysql_query() in C:\xampp\htdocs\froshgah\users\register.php:32 Stack trace: #0 {main} thrown in C:\xampp\htdocs\froshgah\users\register.php on line 32
در اون جا نوشته خط 32 که مربوط به کدmysql_query($conn, "INSERT INTO users (email, password) VALUES ($email, $password)");
میشه اما من خطاییی نمیبینمخطای دریافتی مربوط به فعال نبودن اکستنشن MySQL در تنظیمات PHP است، با توجه به تاریخ نگارش مطلب در کدهای جدید بهتر است از اکستنش MySQLi استفاده کنید که جایگزین MySQL شده است و آموزش های آن در وب وجود دارد (آموزش های سایت نیز به مرور در حال به روزرسانی در همین راستا می باشند)، اگر به هر دلیل همچنان می خواهید از اکستنش قدیمی استفاده کنید باید آن را از تنظیمات سرور یا لوکال هاست فعال نمائید.
حسین
۱۳:۲۷ ۱۳۹۶/۱۲/۲۶
سلام من میخواسم یه فلیدهایی مثل input ایجاد کنم و اطلاعات وارد شده را در آن ها در یک صفحه دیگه ایجاد بشه
سوالتان واضح نیست! فیلد input را می توانید با تگ form و ملحقات آن در HTML ایجاد کنید اما برای ذخیره اطلاعات باید برنامه نویسی PHP و MySQL را فرا گرفته باشید.
رسول فلاح
۱۶:۴۰ ۱۳۹۷/۱۲/۱۷
سلام
سوالی خدمت شما داشتم
اگر بخوایم وقتی کاربر سفارشی رو ثبت می کنه در حالی که صفحه سفارش های ثبت شده در پنل مدیریت باز است پیامی برای مدیر نشان داده بشه چه باید کرد؟
من نمی خوام صفحه برای مدیر رفرش بشه بلکه به محض اینکه شفارش ثبت شد یک اعلان برای مدیر نشان داده بشه تا متوجه بشه که سفارشی ثبت شده
سوالی خدمت شما داشتم
اگر بخوایم وقتی کاربر سفارشی رو ثبت می کنه در حالی که صفحه سفارش های ثبت شده در پنل مدیریت باز است پیامی برای مدیر نشان داده بشه چه باید کرد؟
من نمی خوام صفحه برای مدیر رفرش بشه بلکه به محض اینکه شفارش ثبت شد یک اعلان برای مدیر نشان داده بشه تا متوجه بشه که سفارشی ثبت شده
برای دریافت اطلاعات از سرور بدون رفرش صفحه باید از Ajax استفاده کنید، در سمت کاربر یک تابع بنویسید که به فرض هر چند ثانیه درخواست را به سرور ارسال و پاسخ را دریافت کند، در سمت سرور نیز با کدنویسی PHP وضعیت دیتابیس را بررسی نمائید، آموزش های مربوطه در این خصوص در سایت در دو سطح مقدماتی و کاربردی وجود دارد.
آخرین دیدگاه ها

javascript
سلام 🙌 توی جاوا اسکریپت چطور تگ آپشن رو پیش فرض بزاریم مثلا : تگ آپشن _استان محل صدور : همدان -...۱۴۰۲/۰۷/۰۶
Fateme
سلام مطالب عالی و استفاده می کنم دستتان درد نکنه . سوال من این هست چطور میتونم تاریخ تولد را وارد کنم سن شخص رو...۱۴۰۲/۰۷/۰۵
مجتهدزاده
سلام من در لاراول سعی دارم تا با یک لینک رو اجرا کنم تا یک اس ام اس به شماره ای که در...۱۴۰۲/۰۷/۰۳
پـــرتو
سلام جناب خسته نباشید شرمنده مزاحم میشم عه جناب ببخشید من دو سه تا وبلاگ دارم که یکیش یا دوتاشون هک میشن یعنی...۱۴۰۲/۰۷/۰۳
فاطمه سیداحمدی
با سلام و خسته نباشید من میخوام با استفاده از جاوااسکریپت یه کدی داشته باشم که وقتی کاربر چیزی رو از توی سایت من...۱۴۰۲/۰۷/۰۲
رضا جهانیان
درود برشما من تو گوگل که اسم سایت حراجستون را سرچ می کنم اسم دامنه نوشته شده به انگلیسی کدهای زیادی هم استفاده کردم...۱۴۰۲/۰۶/۳۱
سعید
نمای ظاهری من مثل قبل که در اوت لوک میفرستادم در نیو ایمیل نیست یعنی تغییر کرده چطور میتونم برگردم به همون حالت اول خودش...۱۴۰۲/۰۶/۲۷
سینا
با سلام و خسته نباشید من برای ترجمه متن از گوگل ترانسلیت استفاده می کنم یه مشکلی که دارم اینکه وقتی متنی رو برام...۱۴۰۲/۰۶/۲۵
کوروش
سلام خسته نباشید توضیح : سایتی که تگ های select option ها و همه div ها و label ها ( کلاس های...۱۴۰۲/۰۶/۲۴
عدم اجرای فونت فیس در تب منو
سلام برای تب منو فونت فیس برای تب اول کار میکند اما تب های بعدی اعمال نمیشود چکار باید کرد۱۴۰۲/۰۶/۲۲
محبوبه قاسم پور
سلام وقتتون بخیر برای منوهای کشویی سایت، اگر خاصیت overflow:hidden باشد، زیرمنوها نمایش داده نمی شود، از طرفی اگر این خاصیت فعال نباشد...۱۴۰۲/۰۶/۱۸
پـــرتو
سلام فکنم در یادداشت ها ارسال شده بود و تاریخشم یادم نیست ولی من واقعا نمی دونم کامنتش کجاست که برم برش دارم ...۱۴۰۲/۰۶/۱۴
پـــرتو
سلام خسته نباشید ببخشید مزاحم شدم می خواستم بگم که یه کدی داده بودین قبلا برای بلاگفا که آی پی کسایی که بهمون توهین می...۱۴۰۲/۰۶/۱۱
امیرحسین رستمی
سلام مجدد وقت بخیر لطفا لینک زیر را ببینید میخوام تمام متن های فارسی که اینجا انتخاب کردم رو با عبارت با قائده انتخاب...۱۴۰۲/۰۶/۱۱
امیرحسین رستمی
سلام وقت بخیر من این متنو دارم: میخوام فقط متن های فارسی رو انتخاب کنم با preg_match و متن جایگزین براش بزارم قبلا...۱۴۰۲/۰۶/۱۱
امیرحسین رستمی
در رابطه با دوتا سوال قبلی من این کد رو نوشتم شما بررسی کنید ببینید اگه مشکل دیگه ای نداره ، درست داره کار میکنه...۱۴۰۲/۰۶/۰۹
امیرحسین رستمی
سلام وقت بخیر من یک عبارات با قائده ای میخوام که این متن رو : من همچین عبارتی در نظرم هست ولی ...۱۴۰۲/۰۶/۰۹
hossein
سلام مجدد، ممنون از پاسخگویی شما از وردپرس استفاده میکنم و قالب وودمارت، هدر هم با هدر ساز قالب ساخته شده با اینکه...۱۴۰۲/۰۶/۰۹
امیرحسین
سلام وقت بخیر من یک برنامه نوشتم که از ایپی ای گوگل کمک میگیره و متن میدم بهش و ترجمه میکنه : شما فرض...۱۴۰۲/۰۶/۰۹
hossein
سلام وقت شما بخیر باشه ابتدا جا داره از شما تشکر کنم میخوام یک آیکن لینک دار توی هدر سایتم را از دید...۱۴۰۲/۰۶/۰۹
علی
سلام و با تشکر از راهنمایی شما بنده یک وب سرویس ارسال پیامک دارم که از طریق آن برای کابرانم پیامک ارسال می کنم....۱۴۰۲/۰۶/۰۷
مهدی
سلا چطوری میتونم کدام تو مرورگر دقیق نمایش بدم حتی >< تگ هام نمایش داده بشه در html تگ کد را هم معرف نکنید چون...۱۴۰۲/۰۶/۰۴
محمدرضا
سلام و خدا قوت حضور شما بزرگوار. اول یه تشکر و قدردانی از شما دارم که زمان میزارید و جواب همه دوستان رو میدید....۱۴۰۲/۰۶/۰۳
محمدرضا
سلام وقت شما بخیر لطف بفرمائید با switch و default کدی رو بنویسید که: اگه متغیر a یک باشد متغیر b دو...۱۴۰۲/۰۶/۰۱
پـــرتو
سلام بابت جواب به سوالم در مورد بلاگفا ممنون من خودم با پشتیبانی بلاگفا تماس گرفتم گفنن نمیشه اینکار ولی یه سوال دیگه ازتون داشتم...۱۴۰۲/۰۵/۲۸
fatima
سلام. خسته نباشید. ما با responsive هم میتوانیم اسکرول افقی را حذف کنیم؟۱۴۰۲/۰۵/۲۸
عاطفه
ممنون از پاسخگوییتون. اگر ممکنه این سوال رو هم جواب بدید ممنون میشم. معنی این ارور ها و راه حل رفع اونها رو میخواستم بدونم....۱۴۰۲/۰۵/۲۶
عاطفه
سلام، وقت بخیر. من چندتا مشکل سایتم داره که نمیدونم چطور باید برطرفشون کنم. یکی اینکه وقت لینکای شکسته رو چک میکنم برای لینکدین و...۱۴۰۲/۰۵/۲۵
در انتظار بررسی: ۰
پاسخگویی به سوالات ممکن است تا ۲۴ ساعت زمان ببرد.
پاسخگویی به سوالات ممکن است تا ۲۴ ساعت زمان ببرد.
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.