اشتراک در خبرنامه‌ دارکوب وب

با عضویت در خبرنامه‌ی دارکوب وب مقالات و آموزش‌ها هر هفته به ایمیل شما ارسال می‌شود.

آموزش php مقدماتی قسمت نهم

حالا که این مطالب را فرا گرفتیم بیاید با هم یک url فرضی بسازیم.

<?php
$urlPage = 'php/created/page/url.php';
$param1 = 'This is a string < >';
$param2 = '&#?*$[]+ are bad characters';
$linktext = '<Click> & learn more';

$url = 'http://localhost/';
$url .= rawurlencode($urlPage);
$url .= '?' . 'param1=' . urlencode($param1);
$url .= '&' . 'param2=' . urlencode($param2);
?>

<a href="<?php echo htmlspecialchars($url); ?>">
<?php echo htmlspecialchars($linktext); ?>
</a>

چنین لینکی وجود ندارد اما روی بینک به کلیک کنید و در نوار آدرس آدرس ایجاد شده را ببینید کاملا صحیح و ایجاد شده و درست همان چیزی چاپ میشود که می خواهیم .
اگر بخواهیم از فانکشنی که در یک صفحه php وجود دارد داخل صفحه دیگری استفاده کنیم چه کاری باید انجام دهیم ؟؟؟
از include یا require ، include_once ، require_once استفاده می کنیم ، تفاوت آنها در است اگراز include استفاده کنید اما صفحه مورد نظر وجود نداشته باشد برنامه هم چنان به کار خود ادامه می دهد اما در هنگام استفاده از require اگر صفحه وجود نداشته باشد می گوید هی صفحه مورد نظر وجود نداره و اون صفحه خیلی مهمه ، مثلا صفحه ای که مربوط به اتصالات دیتابیس شماست reqire می شه.
Include_once() فقط یک بار عمل اینکلود را انجام میدهد و اگر دوباره بخواهیم این عمل انجام شود این کار را نمی کند .
فکر می کنم عمل کرد require_once درگر مشخص شده باشد.
من ۳ فایل php اجاد می کنم به نام های

:inclideFunctions
<?php
function hello($name){
return "Hello {$name}";
}

includesHeader :
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Includes</title>
</head>
<body>

سپس از این صفحه ها در صفحه سوم خودم یعنی includes استفاده می کنم :

<?php

include('includedHeader.php');
include('includedFunctions.php');

?>

<?php echo hello('EveryOne'); ?>

</body>
</html>

Page Redirection :

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


<?php
function redirectTo($newLocation){
header('Location:'.$newLocation);
exit;
}

redirectTo('basic.php');

?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Redirect</title>
</head>
<body>

</body>
</html>

در مثال فوق هر موقع به صفحه ی redirect.php برویم بدون معطلی به صفحه basic.php انتقال خواهیم یافت.

کار با فرم :

دو فایل php می سازم یکی به نام form.php که داخل آن یک فرم قرار که اطلاعات را با متد post ارسال می کند بعد از زدن دکمه submit در این صفحه به صفحه formProcessing.php منتقل می شویم ، در formProcessing.php اطلاعات دریافت و چاپ می شوند.

Form.php:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Form</title>
</head>
<body>

<form action="formProcessing.php" method="post">
<p>Username:<input type="text" name="username" value=""></p>
<p>Username:<input type="password" name="password" value=""></p>
<p><input type="submit" name="submit" value="submit"></p>
</form>
</body>
</html>
formProcessing.php
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Form Processing</title>
</head>
<body>

<pre>
<?php
print_r($_POST);
echo '</pre>';
echo '<br>';

if(isset($_POST['submit'])){
echo 'form was submited<br>';
if (isset($_POST['username'])){
$username = $_POST['username'];
}else{
$username = 'default';
}
if(isset($_POST['password'])){
$password = $_POST['password'];
}else
$password = 'default';
}
$username = isset($_POST['username']) ? $_POST['username'] : 'default';
$password = isset($_POST['password']) ? $_POST['password'] : 'default';

echo 'My username is: '.$username.' My password is: '.$password;

?>
</body>
</html>

برای اینکه ببینیم چه چیزی در $_POST قرار دارد می توانیم آن را print_r کنیم ، می دونیم چطور از $_POST اطلاعات و بگیریم اما مشکل اینجاست ممکنه اصلا اطلاعات پست نشده باشن در این صورت با خطا مواجه می شیم ، برای رفع خطا چک می کنیم اگر دکمه سابمیت زده شده بود (اگر دکمه سابمیت زده شود مقدار کلید سابمیت ، سابمیت خواهد بود پس می توان با isset آن را چک کنیم ).آنگاه چک کن اگر username ست شده بود آن را داخل متغییر username بریز (می توانید همان لحظه چاپش کنید ) در غیر این صورد داخل متغییر username کلمه default را قرار بده .
برای password نیز همین کار را کردم

$username = isset($_POST['username']) ? $_POST['username'] : 'default';
$password = isset($_POST['password']) ? $_POST['password'] : 'default';

بعد از آن به این دو خط کد می رسید این دو خط همان کار if else مارا انجام میدهند ، قسمت اول شرط ما که یک شرط بولین است یعنی جواب یا true یا false می باشد سپس علامت سوال بعد از آن کاری که اگر جواب true بود می خواهیم انجام شود را می نویسیم ، بعد علامت دو نقطه بعد از آن کاری که اگر شرط false بود می خواهیم انجام شود را می نویسیم. اگر مستقیما وارد صفحه formProcessing.php شوید می بینید که مقادیر دیفالت برای ما چاپ میشود و منظور مرا بهتر متوجه می شوید.
اگر بخواهیم یک فرم تنها را پروسس کنیم چگونه این عمل را انجام دهیم ؟؟
برای این کار آدرس همان صفحه را در action فرم قرار میدهیم ، در مثال زیر من چک میکنم اگر submit زده شد مقدار username , password را داخل متغییرهای username , password قرار بده سپس اگر username ما برابر پوریا و password برابر ۲۲۲ بود به صفحه basic.php برو در غیر این صورت پیام خطا چاپ می شود.


<?php
require_once('includedFunctions.php');

if (isset($_POST['submit'])) {
$username = $_POST['username'];
$password = $_POST['password'];

if ($username == 'pouria' && $password == '222') {
redirectTo('basic.php');
} else {
$message = 'Wrong username or password';
}
} else {
$username = '';
$message = 'Please log in ';
}

?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Form Single</title>
</head>
<body>
<?php echo $message; ?>
<form action="formSingle.php" method="post">
<p>Username:<input type="text" name="username" value=""></p>
<p>Password:<input type="password" name="password" value=""></p>
<p><input type="submit" name="submit" value="submit"></p>

</form>

</body>
</html>

همین طور صفحه ای به نام includedFunctions.php ساختم که در آن فانکشنی برای ریدایرکت کرد ایجاد کردم ، در کد بالا می بینید که این صفحه را include_once کردم.

درباره نویسنده

پوریا

سلام ، من پوریا هستم با جاوا آشنایی دارم به هوش مصنوعی و امنیت علاقه مندم و امید وارم آموزش هایی که در وب سایت قرار می دم برای شما مفید باشه ، موفق باشید {^}

نظر دهید

سوالات، انتقادات و پیشنهادات خود را در مورد این مطلب برای ما بفرستید. :-)