خانه - تلویزیون هوشمند
Brave reg comp php. دانلود Reg Organizer - تمیز کردن و بهینه سازی سیستم

#عبارتند از
#عبارتند از
int regcomp(regex_t *preg, const char *regex، بینcflags);
int regexec(const regex_t *preg, const char *رشتهاندازه_tnmatch,
regmatch_tمسابقه، بینپرچم ها);
اندازه_t regerror(interrcode، const regex_t *preg، کاراکتر *اربوف,
اندازه_terbuf_size);
void regfree(regex_t *preg);

شرح

کامپایل عبارات منظم POSIX

تابع regcomp() برای کامپایل عبارت منظم در قالبی استفاده می شود که برای جستجوهای بعدی با استفاده از آن مناسب است regexec().

regcomp() یک اشاره گر به منطقه ذخیره سازی قالب بافر ارسال می شود preg، اشاره گر به یک رشته تهی است regexو پرچم ها cflags، برای تعیین نوع کامپایل استفاده می شود.

همه جستجوهای عبارت منظم باید با استفاده از یک الگوی بافر کامپایل شده انجام شوند، بنابراین regexec() باید همیشه با آدرس قالب بافر که توسط تابع مقداردهی شده است فراخوانی شود regcomp().

معنی cflagsممکن است شامل بیتی باشد یاصفر یا بیشتر از مقادیر زیر:

REG_EXTENDEDدر طول تفسیر از دستور عبارت منظم POSIX استفاده کنید regex. اگر این پرچم فعال نباشد، از نحو عبارت ساده POSIX استفاده می شود. REG_ICASEمورد نادیده گرفته شود. جستجوهای بعدی regexec() استفاده از این الگوی بافر به حروف کوچک و بزرگ حساس نخواهد بود. REG_NOSUBموقعیت مسابقات را گزارش ندهید. گزینه ها nmatchو مسابقهبرای regexecاگر الگوی بافر داده شده با فعال بودن این پرچم کامپایل شده باشد () نادیده گرفته می شوند. REG_NEWLINEعملگرهای مطابقت با هیچ کاراکتری با کاراکتر خط جدید مطابقت ندارند.

فهرست کاراکترهای غیر منطبق ( [^...] ) بدون کاراکتر خط جدید با خط جدید یکسان نیست.

عملگر مقایسه بر اساس ابتدای یک رشته ( ^ ) با رشته خالی بلافاصله بعد از خط جدید مطابقت دارد پرچم ها، پرچم های اعدام regexec()، حاوی REG_NOTBOL.

عملگر مقایسه پایان خط ($) رشته خالی را تا کاراکتر شروع خط مطابقت می دهد، مهم نیست که پرچم هاشامل REG_NOTEOL.

مقایسه با عبارت منظم POSIX

تابع regexec() برای مقایسه یک رشته تهی با یک الگوی بافر از پیش پردازش شده استفاده می شود preg. استدلال ها nmatchو مسابقهبرای ارائه اطلاعات در مورد مکان مسابقات استفاده می شود. معنی پرچم هامی تواند بیتی باشد یایک یا هر دو مقدار REG_NOTBOLو REG_NOTEOL. این مقادیر رفتار فرآیند مقایسه را به شرح زیر تعیین می کنند. REG_NOTBOLعملگر مقایسه در ابتدای رشته همیشه از کار می افتد (اما پرچم کامپایل توضیح داده شده در بالا را ببینید REG_NEWLINE). این پرچم زمانی قابل استفاده است regexec() قسمت های جداگانه یک رشته منتقل می شود و شروع چنین رشته ای در این مورد نباید به عنوان شروع یک خط جدید تفسیر شود. REG_NOTEOLعملگر مقایسه پایان خط همیشه خراب می شود (اما پرچم کامپایل که در بالا توضیح داده شد را ببینید REG_NEWLINE).

افست بایت

اگر REG_NOSUBهنگام کامپایل قالب بافر تنظیم نشده است، می توان اطلاعاتی در مورد موقعیت مسابقات به دست آورد. معنی مسابقهباید تعریف شود که حداقل داشته باشد nmatchعناصر. دارند پر می شوند regexec() آدرس مسابقات درون خطی. آفست های یک عبارت فرعی که با شروع می شود من- پرانتز باز، ذخیره شده در پیمچ[i]. آدرس تطبیق کل عبارت منظم در آن ذخیره می شود مسابقه(توجه داشته باشید که برای بازگرداندن آفست های مسابقه نزیر عبارات، معنی nmatchباید حداقل باشد N+1). هر عنصر ساختاری استفاده نشده حاوی مقدار -1 خواهد بود.

ساختار regmatch_t، که یک نوع است مسابقه، تعریف شده در :

ساختار Typedef ( regoff_t rm_so; regoff_t rm_eo; ) regmatch_t;

هر عنصر rm_so، که برابر با 1- نیست، نشان دهنده شروع آفست مسابقه بعدی بزرگترین رشته فرعی در رشته داده شده است. عنصر نسبی rm_eoنشان دهنده افست پایان مسابقه است که اولین کاراکتر بعد از متن مطابقت شده است.

گزارش خطای POSIX

تابع regerrorبرای تبدیل کدهای خطا که ممکن است از آنها دریافت شود استفاده می شود regcomp() و regexec()، به خطوط پیام خطا.

که در regerrorارسال شده: کد خطا errcode، الگوی بافر preg، اشاره گر به بافر رشته کاراکتر اربوفو اندازه بافر ردیف erbuf_size. تابع اندازه را برمی گرداند اربوف، که برای ذخیره پیغام خطا به عنوان یک رشته تهی لازم است. اگر اربوف، و erbuf_sizeپس مساوی صفر نیستند اربوفاول پر شد erbuf_size - 1کاراکترهای پیام خطا را نشان می دهد و با یک بایت تهی ("\0") به پایان می رسد.

آزاد کردن بافر قالب POSIX

تابع رگفری() حافظه اختصاص داده شده به قالب بافر را آزاد می کند pregدر طول فرآیند کامپایل با استفاده از regcomp().

ارزش بازگشتی

تابع regcomp() در کامپایل موفقیت آمیز صفر یا کد خطا را در غیر این صورت برمی گرداند.

تابع regexec() صفر در مسابقه یا REG_NOMATCH، اگر هیچ مسابقه ای وجود نداشت.

خطاها

تابع regcomp() ممکن است خطاهای زیر را برگرداند: REG_BADBRاستفاده نادرست از عملگر بک لینک REG_BADPATاستفاده نادرست از عملگرهای الگو، مانند عملگرهای گروه یا لیست. REG_BADRPTاستفاده نادرست از عملگرهای تکرار، مانند استفاده از "*" به عنوان اولین کاراکتر. REG_EBRACEپرانتزهای جفت نشده در عملگرهای بازه. REG_EBRACKبراکت های مربع جفت نشده در عبارات لیست. REG_ECOLLATEعنصر مرتب‌سازی نامعتبر است. REG_ECTYPEنام کلاس کاراکتر ناشناخته. REG_EENDخطای احتمالی در POSIX.2 تعریف نشده است. REG_EESCAPEاسلش عقبی. REG_EPARENپرانتزهای جفت نشده در عملگرهای گروه بندی. REG_ERANGEاستفاده نادرست از عملگر ناحیه: برای مثال انتهای ناحیه قبل از شروع آن ظاهر می شود. REG_ESIZEعبارت منظم کامپایل شده به یک الگوی بافر بزرگتر از 64 کیلوبایت نیاز دارد. این در POSIX.2 تعریف نشده است. REG_ESPACEحافظه روتین های بیان منظم تمام شده است. REG_ESUBREGارجاع برگشتی نامعتبر به عبارت فرعی.

ابتدا صفحه ثبت نام را با افزودن قابلیت آپلود آواتار بهبود خواهیم داد. تصویر منبع باید با فرمت jpg، gif یا png باشد. همچنین نباید بیش از 2 مگابایت باشد. نگران نباشید، پس از فشرده شدن توسط اسکریپت، اندازه آواتار حدود 3 کیلوبایت و فرمت jpg خواهد بود. صفحه را باز کنید reg.phpو آن را در تگ اضافه کنید < فرم> خط enctype="multipart/form-data"، به مانند مثال:


ثبت










حالا بیایید پس انداز کنیم reg.php

2. سپس باید یک فیلد دیگر در جدول ایجاد کنید کاربران. برویم به phpmyadmin، پایگاه داده و جدول مورد نظر را انتخاب کنید.


تمام مقادیر را مانند شکل تنظیم می کنیم:

مسیر آواتار در این فیلد ثبت می‌شود و در یک پوشه جداگانه ذخیره می‌شود، بگذارید آن را «آواتار» بنامیم. پوشه در همان دایرکتوری که بقیه فایل های اسکریپت هستند قرار می گیرد.

3.به فایل بروید صرفه جویی_ کاربر. phpو پس از حذف فاصله از لاگین و رمز عبور کد زیر را اضافه کنید:

//حذف فضاهای اضافی
$login = trim($login);

// جدید اضافه کن ********************************************

//یک بررسی برای طول لاگین و رمز عبور اضافه کنید
if (strlen($login)< 3 or strlen($login) > 15) {
exit("ورود باید حداقل از 3 کاراکتر تشکیل شده باشد و بیش از 15 کاراکتر نباشد.");
}
if (strlen($password)< 3 or strlen($password) > 15) {
exit ("رمز عبور باید حداقل 3 کاراکتر و بیش از 15 کاراکتر باشد.");
}

if (!empty($_POST["fupload"])) //بررسی کنید که آیا کاربر تصویر را ارسال کرده است
{
$fupload=$_POST["fupload"]; $fupload = trim($fupload);
اگر ($fupload =="" یا خالی ($fupload)) (
unset($fupload);// اگر متغیر $fupload خالی است، آن را حذف کنید
}
}
اگر (!isset($fupload) یا خالی ($fupload) یا $fupload =="")
{
//اگر متغیر وجود نداشته باشد (کاربر تصویری ارسال نکرده است)، یک تصویر از پیش آماده شده با کتیبه "بدون آواتار" به آن اختصاص دهید.
$avatar = "avatars/net-avatara.jpg"; //شما می توانید net-avatara.jpg را بکشید یا آن را از منبع بگیرید
}
دیگر
{
//در غیر این صورت - تصویر کاربر را بارگیری کنید
$path_to_90_directory = "avatars/";//پوشه ای که تصویر اولیه و کپی فشرده آن بارگذاری می شود

If(preg_match("/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/",$_FILES["fupload"]["نام"])) //بررسی فرمت تصویر منبع
{
$filename = $_FILES["fupload"]["name"];
$source = $_FILES["fupload"]["tmp_name"];
$target = $path_to_90_directory . $filename;
move_uploaded_file($source, $target);//آپلود اصلی در پوشه $path_to_90_directory
if(preg_match("/[.](GIF)|(gif)$/"، $filename)) (
$im = imagecreatefromgif($path_to_90_directory.$filename) ; //اگر نسخه اصلی با فرمت گیف بود، یک تصویر با همان فرمت ایجاد کنید. برای فشرده سازی بعدی لازم است
}
if(preg_match("/[.](PNG)|(png)$/، $filename)) (
$im = imagecreatefrompng($path_to_90_directory.$filename) ;//اگر نسخه اصلی با فرمت png بود، تصویر را با همان فرمت ایجاد کنید. برای فشرده سازی بعدی لازم است
}

If(preg_match("/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/، $filename)) (
$im = imagecreatefromjpeg($path_to_90_directory.$filename); //اگر نسخه اصلی با فرمت jpg بود، یک تصویر با همان فرمت ایجاد کنید. برای فشرده سازی بعدی لازم است
}
//ایجاد یک تصویر مربعی و فشرده سازی بعدی آن برگرفته از سایت www.codenet.ru
// یک مربع 90x90 ایجاد کنید
// dest - تصویر حاصل
// w - عرض تصویر
// نسبت - ضریب تناسب
$w = 90; // مربع 90x90. قابل عرضه در سایزهای دیگر
// تصویر اصلی را بر اساس ایجاد کنید
// فایل منبع و اندازه آن را تعیین کنید
$w_src = imagesx($im); //عرض را محاسبه کنید
$h_src = imagesy($im); // ارتفاع تصویر را محاسبه کنید
// یک تصویر مربع خالی ایجاد کنید
// truecolor مهم است!، در غیر این صورت نتیجه 8 بیتی خواهیم داشت
$dest = imagecreatetruecolor($w,$w);
// اگر عکس افقی است، مرکز مربع را در امتداد x ببرید
اگر ($w_src>$h_src)
imagecopyresampled($dest، $im، 0، 0،
دور((حداکثر($w_src،$h_src)-min($w_src،$h_src))/2)،
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
// بالای مربع را در امتداد y برش دهید،
// اگر عکس عمودی است (البته می توانید از وسط هم استفاده کنید)
اگر ($w_src<$h_src)
imagecopyresampled($dest، $im، 0، 0، 0، 0، $w، $w،
min($w_src،$h_src)، min($w_src،$h_src));
// تصویر مربعی بدون برش مقیاس بندی می شود
اگر ($w_src==$h_src)
imagecopyresampled($dest، $im، 0، 0، 0، 0، $w، $w، $w_src، $w_src);
$date=time(); //زمان فعلی را محاسبه کنید.
imagejpeg($dest, $path_to_90_directory.$date.".jpg");//تصویر را با فرمت jpg در پوشه مورد نظر ذخیره کنید، نام زمان فعلی خواهد بود. ساخته شده برای جلوگیری از داشتن نام های یکسان.
//چرا jpg؟ فضای بسیار کمی را اشغال می کند + انیمیشن تصویر GIF که حواس کاربر را پرت می کند از بین می رود. وقتی متوجه حرکتی از گوشه چشم خود می شوید خواندن کامنت او چندان خوشایند نیست.
$avatar = $path_to_90_directory.$date.".jpg";//مسیر آواتار را در متغیر قرار دهید.
$delfull = $path_to_90_directory.$filename;
لغو پیوند ($delfull)؛//تصویر آپلود شده اصلی را حذف کنید، دیگر به آن نیاز نداریم. وظیفه به دست آوردن یک مینیاتور بود.
}
دیگر
{
//در صورت عدم تطابق فرمت، پیام مربوطه را صادر کنید
exit("آواتار باید در قالب باشد JPG، GIF یا PNG");
}
//پایان فرآیند بارگیری و اختصاص دادن متغیر $avatar آدرس ava بارگذاری شده
}



// جدید اضافه شد ********************************************** **
// بعد همه چیز از قسمت اول مقاله می آید، اما باید تغییری به کوئری پایگاه داده اضافه کنید.
//به پایگاه داده متصل شوید
// وجود کاربری با همان ورود را بررسی کنید
$result = mysql_query("SELECT ID FROM users WHERE login="$login"",$db);
if (!empty($myrow["id"])) (
exit("با عرض پوزش، لاگینی که وارد کردید قبلا ثبت شده است. لطفا یک ورود دیگر را وارد کنید.");
}
// اگر چنین چیزی وجود ندارد، داده ها را ذخیره کنید
$result2 = mysql_query("INSERT INTO users (login,password,avatar) VALUES("$login""$password"""$avatar")");
// بررسی کنید که آیا خطا وجود دارد
اگر ($result2=="TRUE")
{
echo "شما با موفقیت ثبت نام کردید! اکنون می توانید وارد سایت شوید. صفحه اصلی";
}
دیگر(
echo "خطا! شما ثبت نام نکرده اید.";
}
?>

4. باید یک جدول را به همان پایگاه داده اضافه کنید. آدرس های IP که هنگام ورود به سیستم دچار خطا شده اند را ذخیره می کند. به این ترتیب می توانیم دسترسی به کسانی را که بیش از سه بار متوالی مرتکب اشتباه شده اند برای حدود 15 دقیقه محدود کنیم.
بیایید به phpmyadmin برویم و یک جدول جدید با 3 فیلد ایجاد کنیم:


ip - آدرس IP.
date - تاریخ ورود ناموفق در 15 دقیقه گذشته برای کاربر با این آی پی. col - تعداد خطاهای 15 دقیقه گذشته برای کاربر با این IP.
عالی! تمام شد، اکنون اجازه دهید فایل تأیید ورود و رمز عبور را تغییر دهیم، زیرا اکنون رمز عبور ما رمزگذاری شده است. testreg.php را باز کنید و همه چیز را که خارج از حذف فاصله از لاگین و رمز عبور است حذف کنید. بعد کد زیر را اضافه می کنیم:

//حذف فضاهای اضافی
$login = trim($login);
$password = trim($password);

// با یک جدید جایگزین کنید******************************************** *******
// به پایگاه داده متصل شوید
include("bd.php");// فایل bd.php باید در همان پوشه ای باشد که همه پوشه های دیگر وجود دارد، اگر اینطور نیست، فقط مسیر را تغییر دهید.
// مینی چک برای انتخاب رمز عبور
$ip=getenv("HTTP_X_FORWARDED_FOR");
if (خالی($ip) || $ip=="ناشناس") ($ip=getenv("REMOTE_ADDR"); )//extract ip
mysql_query ("DELETE FROM oshibka WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(تاریخ) > 900")؛//آدرس های IP کاربرانی را که هنگام ورود به سیستم اشتباه کرده اند پس از 15 دقیقه حذف کنید.
$result = mysql_query("SELECT col FROM oshibka WHERE ip="$ip"",$db // بازیابی تعداد تلاش های ناموفق برای ورود به سیستم طی 15 مورد گذشته برای یک کاربر با IP معین);
$myrow = mysql_fetch_array($result);
اگر ($myrow["col"] > 2) (
//اگر بیش از دو خطا یعنی سه خطا وجود داشته باشد، پیامی صادر می کنیم.
exit("شما 3 بار نام کاربری یا رمز عبور خود را اشتباه وارد کردید. لطفا قبل از تلاش مجدد 15 دقیقه صبر کنید.");
}
$password = md5($password);//رمزگذاری رمز عبور
$password = strrev($password);// برای قابلیت اطمینان، معکوس را اضافه کنید
$password = $password."b3p6f";
//می توانید چند کاراکتر خود را به سلیقه خود اضافه کنید، مثلاً با وارد کردن "b3p6f". اگر این رمز عبور در همان سرور md5 هک شود، بدیهی است که هیچ چیز خوبی از آن حاصل نخواهد شد. اما من به شما توصیه می کنم که شخصیت های دیگری را، شاید در ابتدای خط یا وسط قرار دهید.
//در این صورت لازم است طول فیلد رمز در پایگاه داده افزایش یابد. رمز عبور رمزگذاری شده ممکن است بسیار بزرگتر باشد.

$result = mysql_query("SELECT * FROM users WHERE login="$login" AND password="$password"",$db); //بازیابی از پایگاه داده تمام داده های مربوط به کاربر با ورود و رمز عبور وارد شده
$myrow = mysql_fetch_array($result);
if (خالی ($myrow["id"]))
{
//در صورتی که کاربری با لاگین و رمز عبور وارد شده وجود نداشته باشد
//ما یک رکورد ایجاد می کنیم که این ip نمی تواند وارد شود.
$select = mysql_query("SELECT ip FROM oshibka WHERE ip="$ip"");
$tmp = mysql_fetch_row ($select);
if ($ip == $tmp) (//بررسی کنید که آیا کاربر در جدول "oshibka" قرار دارد یا خیر
$result52 = mysql_query("SELECT col FROM oshibka WHERE ip="$ip"",$db);
$myrow52 = mysql_fetch_array($result52);
$col = $myrow52 + 1;//یک تلاش ناموفق دیگر برای ورود به سیستم اضافه کنید
mysql_query("خطای به روز رسانی SET col=$col,date=NOW() WHERE ip="$ip"");
}
دیگر(
mysql_query("INSERT INTO oshibka (ip,date,col) VALUES ("$ip",NOW(),"1")");
//اگر در 15 دقیقه گذشته خطایی وجود نداشت، یک ورودی جدید در جدول "oshibka" وارد کنید.
}

exit ("با عرض پوزش، نام کاربری یا رمز عبوری که وارد کردید نادرست است.");
}
دیگر(
nbsp; //اگر پسوردها مطابقت داشته باشند، یک جلسه برای کاربر راه اندازی می کنیم! می توانید به او تبریک بگویید، او وارد شد!
$_SESSION["password"]=$myrow["password"];
$_SESSION["login"]=$myrow["login"];
$_SESSION["id"]=$myrow["id"];//این داده اغلب استفاده می شود، بنابراین کاربر وارد شده آن را با خود حمل می کند.

//بعد، داده ها را در کوکی ها برای ورود بعدی ذخیره می کنیم.
//توجه!!! این کار را بنا به صلاحدید خود انجام دهید زیرا داده ها در کوکی ها بدون رمزگذاری ذخیره می شوند
اگر ($_POST["ذخیره"] == 1) (
//اگر کاربر بخواهد داده هایش برای ورود بعدی ذخیره شود، آن را در کوکی های مرورگرش ذخیره می کنیم.
setcookie("login", $_POST["login"], time()+9999999);
setcookie("password", $_POST["password"], time()+9999999);
}}
پژواک" ";//ما کاربر را به صفحه اصلی هدایت می کنیم، جایی که ما او را از ورود موفقیت آمیز مطلع می کنیم
?>

5. صفحه اصلی را به طور کامل تغییر می دهیم. لازم است آواتار کاربر روی آن نمایش داده شود، پیوندی برای خروج از حساب نمایش داده شود و یک چک باکس برای به خاطر سپردن رمز عبور هنگام ورود به سیستم اضافه شود.
Index.php

// کل رویه در جلسات کار می کند. جایی است که اطلاعات کاربر در زمانی که او در سایت است ذخیره می شود. راه اندازی آنها در همان ابتدای صفحه بسیار مهم است!!!
session_start();
include("bd.php");// فایل bd.php باید در همان پوشه ای باشد که همه پوشه های دیگر وجود دارد، اگر اینطور نیست، فقط مسیر را تغییر دهید.
اگر (! خالی ($_SESSION["ورود به سیستم"]) و ! خالی ($_SESSION["گذرواژه"]))
{
//اگر لاگین و رمز عبور در جلسات وجود دارد، آنها را بررسی کنید و آواتار را بازیابی کنید
$login = $_SESSION["ورود"];
$password = $_SESSION["رمز عبور"];
$result = mysql_query("SELECT id,avatar FROM users WHERE login="$login" AND password="$password"",$db);
$myrow = mysql_fetch_array($result);
// داده های لازم کاربر را استخراج کنید
}
?>


صفحه نخست


صفحه نخست

اگر (!isset($myrow["avatar"]) یا $myrow["avatar"]=="") (
//بررسی کنید که آیا داده های کاربر از پایگاه داده استخراج شده است. اگر نه، پس او وارد نشده است، یا رمز عبور در جلسه نادرست است. ما یک پنجره ورود به سیستم را نمایش می دهیم. اما ما آن را برای کسانی که وارد می شوند نمایش نمی دهیم، آنها دیگر به آن نیاز ندارند.
چاپ<<


اینجا؛

اگر (isset($_COOKIE["login"])) //آیا متغیری با ورود به سیستم در COOKIE وجود دارد. این باید در صورتی باشد که کاربر در هنگام ورود قبلی روی کادر "مرا به خاطر بسپار" کلیک کرده باشد
{
//اگر بله، مقدار آن را در فرم وارد کنید. در این حالت به کاربر نشان داده می شود که لاگین وی قبلاً در ستون مورد نیاز وارد شده است
echo " value="".$_COOKIE["login"]."">";
}

چاپ<<




اینجا؛

اگر (isset($_COOKIE["password"]))//آیا متغیری با رمز عبور در کوکی وجود دارد. این باید در صورتی باشد که کاربر در هنگام ورود قبلی روی کادر "مرا به خاطر بسپار" کلیک کرده باشد
{
//اگر بله، مقدار آن را در فرم وارد کنید. در این حالت به کاربر نشان داده می شود که رمز عبور وی قبلاً در ستون مورد نیاز وارد شده است
echo " value="".$_COOKIE["password"]."">";
}

چاپ<<



مرا به خاطر بسپار.






ثبت نام



شما به عنوان مهمان وارد شده اید

اینجا؛
}
دیگر
{
//اگر ورود موفقیت آمیز باشد، همه چیز زیر بین ستاره ها به کاربر داده می شود.

چاپ<<
شما به عنوان $_SESSION وارد سایت شده اید (خروج)


این لینک فقط برای کاربران ثبت نام شده در دسترس است

آواتار شما:




اینجا؛

//************************************************************************************
//در صورت موفقیت آمیز بودن ورود، هر چیزی که در بالا بین ستاره ها قرار دارد به کاربر داده می شود.
}
?>



6. لازم است امکان خروج کاربران لاگین شده فراهم شود. قبلاً پیوندی برای خروج در صفحه اصلی وجود داشت. اما این فایل هنوز وجود ندارد. پس بیایید یک فایل جدید بسازیم exit.phpبا کد:

session_start();
اگر (خالی ($_SESSION["ورود"]) یا خالی ($_SESSION["گذرواژه"]))
{
//اگر هیچ جلسه ای با لاگین و رمز عبور وجود نداشته باشد، این فایل توسط یک کاربر غیر وارد شده دسترسی پیدا کرده است. او به اینجا تعلق ندارد. ما یک پیغام خطا صادر می کنیم و اسکریپت را متوقف می کنیم
exit ("دسترسی به این صفحه فقط برای کاربران ثبت نام شده مجاز است. اگر ثبت نام کرده اید، با استفاده از نام کاربری و رمز عبور خود وارد سایت شوید
صفحه نخست")؛
}

unset($_SESSION["رمز عبور"]);
unset($_SESSION["login"]);
unset($_SESSION["id"]);// متغیرها را در جلسات نابود کنید
خروج (" ");
// کاربر را به صفحه اصلی بفرستید.
?>

باشه الان همه چی تموم شد! برای سلامتی خود از آن لذت ببرید! موفق باشید!



تصمیم گرفتم این مقاله را به همه کسانی که شروع به مطالعه می کنند تقدیم کنم PHPچون همه یک خطا دریافت می کنند. نمی دانم چرا اجازه می دهند، اما همیشه این کار را می کنند. بدون اغراق می گویم که تا کنون حدود صد سوال دریافت کرده ام که در این مقاله به آنها پاسخ داده خواهد شد. این خطا مربوط به راه اندازی نادرست در PHP.

همانطور که تقریباً همه مبتدیان انجام می دهند:

  1. ايجاد كردن فایل PHP(گاهی فایل HTML، اما اینها مبتدی ترین هستند).
  2. اونجا بنویس کد پی اچ پی.
  3. و دوبار کلیک می کنند تا در مرورگر باز شود.

نتیجه این است که مرورگر کد را باز می کند، اما عجله ای برای اجرای آن ندارد. به سادگی برخی از کدها را به صورت متن ساده نمایش می دهد یا اصلاً چیزی را نمایش نمی دهد.

اشتباه این رویکرد این است که دانش آموز آن را درک نمی کند PHP یک زبان سمت سرور است، نه مشتری این HTMLیا جاوا اسکریپتزبان های مشتری، البته آنها توسط مرورگر پردازش می شوند. اما برای PHP به یک مترجم نیاز دارد. و این مفسر توسط سرور راه اندازی می شود.

نتیجه: شما باید کد PHP را از طریق سرور اجرا کنید. اگر تو داری دنوریعنی از طریق او.

اکنون، نحوه اجرای کد PHP از طریق Denwer. اکثر مبتدیان دوباره همان اشتباه را تکرار می کنند. به نظر می رسد آنها همه چیز را به درستی انجام می دهند، پوشه های لازم را ایجاد می کنند، راه اندازی مجدد می شوند دنورو به نظر می رسد تنها چیزی که باقی می ماند فراخوانی صحیح فایل است. اما در اینجا دوباره یک خطا وجود دارد: آنها دوباره فایل را به سادگی در مرورگر باز می کنند (یا با کشیدن فایل به مرورگر یا با دوبار کلیک کردن). این را می توان به راحتی با آدرس موجود در نوار آدرس مشاهده کرد. چیزی شبیه این وجود خواهد داشت: file:///Z:\home\mysite.local\www\script.php.

و باید آن را به درستی راه اندازی کنید، وارد کردن آدرس میزبان مجازی. یعنی مستقیماً در نوار آدرس مرورگر وارد کنید: http://mysite.local/script.php- همین است، اکنون اسکریپت اجرا می شود و نتیجه خود را نشان می دهد.

امیدوارم این مقاله به بسیاری از مبتدیانی که تازه شروع به یادگیری کرده اند کمک کند PHP.

محتوا

ereg

ereg -- مقدار جفتی عبارت منظم
شرح
int ereg (الگوی رشته، رشته رشته، آرایه)؛

به دنبال مقادیر جفت شده می گردد رشتهدر عبارت منظم مشخص شده در الگو .

اگر مقادیر جفت شده برای رشته های فرعی در پرانتز پیدا شود الگوو تابع با آرگومان سوم فراخوانی شد قوانین، سپس مقادیر جفت شده در عناصر ذخیره می شوند قوانین. $regs شامل یک رشته فرعی است که با اولین پرانتز سمت چپ شروع می شود. $regs شامل رشته فرعی است که با پرانتز دوم شروع می شود و غیره. $regs حاوی یک کپی خواهد بود رشته .

جستجو به حروف کوچک و بزرگ حساس است.

اگر مقدار منطبقی برای الگو در رشته پیدا شد، تابع true را برمی‌گرداند، یا اگر مقادیر منطبقی یافت نشد یا خطایی رخ داد، false را برمی‌گرداند.

کد زیر تاریخ را با فرمت ISO استخراج می کند و با فرمت DD.MM.YYYY خروجی می گیرد:

مثال 1. ereg() مثال

اگر (ereg("((4))-((1,2))-((1,2))"، $date، $regs)) ( echo "$regs.$regs.$regs"؛ ) other (بازتاب "قالب تاریخ نامعتبر: $date"؛ )

ereg_replace

ereg_replace -- جایگزین عبارت منظم می شود
شرح
رشته ereg_replace (الگوی رشته، جایگزینی رشته، رشته رشته);

این تابع اسکن می کند رشتهبه مقادیر جفت شده k الگو، سپس متن یافت شده را جایگزین می کند جایگزینی .

اگر الگوپس رشته های فرعی در پرانتز وجود دارد جایگزینیممکن است دارای زیر رشته هایی مانند \\ باشد عدد، که با متن مطابق با زیر رشته عددی در پرانتز جایگزین می شود. \\ 0 کل محتوای رشته را پردازش می کند. حداکثر 9 رشته فرعی قابل استفاده است. پرانتزها را می توان گروه بندی کرد که در این صورت با پرانتزهای آغازین شمارش می شوند. به عنوان مثال، کد زیر سه بار "This was a test" را چاپ می کند:

مثال 1. ereg_replace()

$string = "این یک آزمایش است"; echo ereg_replace(" is", " was", $string); echo ereg_replace("()is"، "\\1was"، $string); echo ereg_replace("(()is)"، "\\2was"، $string);

همچنین ببینید،،، و.

eregi

eregi -- جستجوی غیر حساس به حروف بزرگ برای مقادیر جفت شده در عبارات منظم
شرح
int eregi (الگوی رشته، رشته رشته، آرایه)؛

eregi_replace

eregi_replace -- جایگزینی عبارت منظم غیر حساس به حروف بزرگ
شرح
string eregi_replace (الگوی رشته، جایگزینی رشته، رشته رشته);

شکاف

split -- یک رشته را با استفاده از یک عبارت منظم به یک آرایه تقسیم می کند
شرح
تقسیم آرایه (الگوی رشته، رشته رشته، int)؛

آرایه‌ای از رشته‌ها را برمی‌گرداند که هر کدام زیر رشته‌ای از یک رشته هستند که از شکستن آن رشته به قسمت‌های جدا شده از یکدیگر تشکیل شده است. الگو. اگر خطایی رخ دهد، تابع false خواهد شد.

برای دریافت 5 فیلد اول از یک خط در /etc/passwd:

صادر خواهد شد.

از این ویژگی می توان برای انجام مقایسه های حساس به حروف بزرگ و کوچک در محصولاتی که فقط عبارات حساس به حروف بزرگ را پشتیبانی می کنند استفاده کرد.

 


خواندن:



آپدیت اندروید اوریو برای سامسونگ گلکسی (2018)

آپدیت اندروید اوریو برای سامسونگ گلکسی (2018)

در 21 آگوست 2017، ارائه سیستم عامل جدید گوگل که مدت ها مورد انتظار بود، برگزار شد. این پلتفرم نامی به یاد ماندنی دریافت کرد -...

چگونه یک شماره پنهان را پیدا کنیم

چگونه یک شماره پنهان را پیدا کنیم

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

طرح تعرفه maxi smart mts

طرح تعرفه maxi smart mts

از لحظه ای که تعرفه اسمارت برای فعال سازی در دسترس قرار گرفت، دستخوش تغییرات زیادی شده است. آنها به اندازه هزینه اشتراک، تعداد...

تنظیمات خودکار اینترنت "Megafon": دستورالعمل برای کاربران

تنظیمات خودکار اینترنت

اغلب، تنظیم دستی اینترنت در سیم کارت های مدرن مورد نیاز نیست - فقط انتقال داده را در تنظیمات دستگاه فعال کنید و...

فید-تصویر RSS