Man regcomp(3): POSIX რეგულარული გამოხატვის ფუნქციები. ჩამოტვირთეთ Reg Organizer - სისტემის გაწმენდა და ოპტიმიზაცია Unlimited reg comp php

ინსტალაციის ეს სახელმძღვანელო დაგეხმარებათ დააინსტალიროთ და დააკონფიგურიროთ PHP3 თქვენს Windows 9x/NT ვებ სერვერებზე. ეს სახელმძღვანელოშედგენილია ბობ სილვას მიერ. უახლესი ვერსიაშეგიძლიათ იხილოთ http://www.umesd.k12.or.us/php/win32install.html.

ეს სახელმძღვანელო უზრუნველყოფს ინსტალაციის მხარდაჭერას:

პერსონალური ვებ სერვერი (რეკომენდებულია უახლესი ვერსია)
ინტერნეტ ინფორმაციის სერვერი 3 ან 4
Apache 1.3.x
Omni HTTPd 2.0b1
PHP3-ის კონფიგურაციის ცვლილება:

ყველა მოდული ახლა იწყება პრეფიქსით "php3_". თქვენ უნდა შეცვალოთ თქვენი php3.ini ფაილი და/ან გაფართოების ჩატვირთვის ყველა სკრიპტი ფუნქციით dl ()(ან წაშალეთ "php3_" პრეფიქსი ყველგან). ეს თავიდან აიცილებს დაბნეულობას შორის PHP მოდულებიდა მათი დამხმარე ბიბლიოთეკები.

ChangeLog, FAQ და განახლებული დოკუმენტაცია ყოველთვის შეგიძლიათ იხილოთ ოფიციალურ PHP ვებსაიტზე ან მის ნებისმიერ სარკეზე.

ინსტალაციის ძირითადი ნაბიჯები:

ეს ნაბიჯები უნდა დასრულდეს ნებისმიერ ინსტალაციაზე სერვერის სპეციფიკურ მითითებამდე:

    გახსენით განაწილების ფაილი თქვენს მიერ არჩეულ დირექტორიაში.

    კარგი ვარიანტი იქნება "C:\PHP3\".

    დააკოპირეთ ფაილი "php3-dist.ini" თქვენს "%WINDOWS%" დირექტორიაში და გადაარქვით სახელი "php3.ini".
    თქვენი "%WINDOWS%" დირექტორია ჩვეულებრივ არის:
  • c:\Windows Windows 95/98-ისთვის

    • c:\winnt ან c:\winnt40 NT სერვერებისთვის

      შეცვალეთ თქვენი "php3.ini" ფაილი:

      თქვენ უნდა შეცვალოთ "extension_dir" გზაზე თქვენი PHP ინსტალაციის დირექტორიაში, ან სადაც განათავსეთ "php3_*.dll" ფაილები (მაგალითად c:\php3); დააყენეთ "doc_root" გზაზე, სადაც მდებარეობს ვებ სერვერის document_root (მაგალითად c:\apache\htdocs ან c:\webroot);აირჩიეთ რომელი მოდულები გსურთ ჩატვირთოთ PHP-ის დაწყებისას. თქვენ შეგიძლიათ გააუქმოთ "extension=php3_*.dll" ხაზები შესაბამისი მოდულების ჩასატვირთად. ზოგიერთი მოდული მოითხოვს დამატებითი ინსტალაცია

      რამდენიმე ბიბლიოთეკა სისტემაში სწორი მუშაობისთვის. იხილეთ PHP FAQ დამატებითი ინფორმაციისთვის, თუ სად უნდა მიიღოთ დამხმარე ბიბლიოთეკები. დამატებითი ინფორმაცია PHP-ში browscap-ის გამოყენების შესახებ ინფორმაციისთვის გადადით mirror-ზე, აირჩიეთ "source" ღილაკი, რომ ნახოთ ის მოქმედებაში;

Windows 95/98/NT და PWS/IIS 3:

ამ სერვერების კონფიგურაციის რეკომენდებული მეთოდია INF ფაილების გამოყენება, რომლებიც მოწოდებულია განაწილებასთან ერთად (php_iis_reg.inf). შეგიძლიათ დაარედაქტიროთ ეს ფაილი და დარწმუნდით, რომ გაფართოებები და PHP ინსტალაციის დირექტორია ემთხვევა თქვენს პარამეტრებს. ან შეგიძლიათ მიჰყვეთ ქვემოთ ჩამოთვლილ ნაბიჯებს, რომ გააკეთოთ ეს ხელით.

გაფრთხილება: ეს ნაბიჯები მოიცავს პირდაპირი მუშაობა windows რეესტრით. ჩვენ მკაცრად გირჩევთ, რომ პირველ რიგში გააკეთოთსარეზერვო ასლი

    რეესტრი. PHP-ის განვითარების გუნდი არ არის პასუხისმგებელი, თუ დააზიანებთ თქვენს რეესტრს.

    გაუშვით Regedit;
    ნავიგაცია: HKEY_LOCAL_MACHINE /System/CurrentControlSet/Services

    /W3Svc /პარამეტრები/ScriptMap.

    რედაქტირების მენიუდან აირჩიეთ New->String Value.

    განსაზღვრეთ გაფართოება, რომლის გამოყენებაც გსურთ თქვენი PHP სკრიპტებისთვის (მაგ. php3). ორჯერ დააწკაპუნეთ მნიშვნელობაზეახალი ხაზი

    და მონაცემთა ველში შეიყვანეთ გზა php.exe exe-მდე (მაგალითად c:\php3\php.exe %s %s). "%s %s" ძალიან მნიშვნელოვანია, PHP მის გარეშე არ იმუშავებს გამართულად;

    გაიმეორეთ ეს ნაბიჯები თითოეული გაფართოებისთვის, რომელიც გსურთ დააკავშიროთ PHP სკრიპტებთან;

    ახლა გადადით HKEY_CLASSES_ROOT-ზე;

    რედაქტირების მენიუდან აირჩიეთ New->Key ;

    განსაზღვრეთ გაფართოების გასაღები, რომელიც დააინსტალირეთ წინა განყოფილებაში (მაგალითად.php3

    აირჩიეთ ახალი გასაღები, ორჯერ დააწკაპუნეთ "ნაგულისხმევი მნიშვნელობა" ფანჯრის მარჯვენა მხარეს და შეიყვანეთ phpfile .

    გაიმეორეთ ბოლო ნაბიჯი თითოეული გაფართოებისთვის, რომელიც დააინსტალირეთ წინა განყოფილებაში;

    ახლა შექმენით სხვა New->Key ქვეშ HKEY_CLASSES_ROOT და ეს არის php ფაილის სახელი.

    მონიშნეთ ახალი phpfile phpfile გასაღები და ფანჯრის მარჯვენა მხარეს ორჯერ დააწკაპუნეთ „ნაგულისხმევ მნიშვნელობაზე“ და შეიყვანეთ PHP Script .

    დააწკაპუნეთ მარჯვენა ღილაკით phpfile-ზე და აირჩიეთ New->Key, ეს არის Shell-ის სახელი.

    დააწკაპუნეთ მარჯვენა ღილაკით Shell-ზე და აირჩიეთ New->Key, ეს სახელი ღიაა.

    დააწკაპუნეთ მაუსის მარჯვენა ღილაკით გახსნაზე და აირჩიეთ New->Key, ეს სახელი არის ბრძანება.

    აირჩიეთ ახალი ბრძანების გასაღები და ფანჯრის მარჯვენა მხარეს, ორჯერ დააწკაპუნეთ "ნაგულისხმევ მნიშვნელობაზე" და შეიყვანეთ გზა php.exe. მაგალითად: c:\php3\php.exe -q %1 . (არ დაგავიწყდეთ %1).

დატოვეთ Regedit;

PWS და IIS 3 მომხმარებლებს ახლა აქვთ სრულად მოქმედი სისტემა.

იმისათვის, რომ დააინსტალიროთ PHP3 NT სერვერზე, რომელიც მუშაობს IIS4, მიჰყევით ამ ინსტრუქციას:

    IN ინტერნეტ სერვისიმენეჯერი (MMC) აირჩიეთ ვებ საიტი ან აპლიკაციის მთავარი დირექტორია;

    გახსენით დირექტორია თვისებების მენიუ (დააწკაპუნეთ მარჯვენა ღილაკით და აირჩიეთ თვისებები) და შემდეგ დააწკაპუნეთ მთავარი დირექტორია, ვირტუალური დირექტორია ან დირექტორიაში ჩანართზე;

    დააწკაპუნეთ კონფიგურაციის ღილაკს და შემდეგ აირჩიეთ App Mappings ჩანართი;

    დააწკაპუნეთ დამატება, შესრულებად ჩარჩოში ჩაწერეთ c:\path-to-php-dir\php.exe %s %s .

    თქვენ უნდა დაასრულოთ %s %s-ით, თუ არა, PHP არ იმუშავებს სწორად;

    გაფართოების ველში მიუთითეთ ფაილის გაფართოება, რომელიც გსურთ დაკავშირებული იყოს PHP სკრიპტებთან (ჩვეულებრივ (.php3 და .phtml); დააყენეთ საჭირო უსაფრთხოება (ეს კეთდება ინტერნეტ სერვისის მენეჯერში) და თუ თქვენი NT სერვერი იყენებსფაილური სისტემა

NTFS, დაამატეთ შესრულების ნებართვები I_USR_ დირექტორიაში, რომელიც შეიცავს php.exe .

Windows 9x/NT და Apache 1.3.x

თქვენ უნდა შეცვალოთ თქვენი srm.conf ან httpd.conf ფაილი, რათა დააკონფიგურიროთ Apache PHP CGI შესრულებადებთან მუშაობისთვის.

    მიუხედავად იმისა, რომ Apache-ში PHP-ის კონფიგურაციის რამდენიმე ვარიანტი შეიძლება იყოს, ეს საკმაოდ მარტივია დამწყებთათვისაც კი. გთხოვთ, მიმართოთ Apache-ს დოკუმენტაციას კონფიგურაციის დირექტივების შესახებ ინფორმაციისთვის.

    ScriptAlias ​​/php3/"c:/path-to-php-dir/php.exe"

    AddType აპლიკაცია/x-httpd-php3 .php3

    AddType აპლიკაცია/x-httpd-php3 .phtml

სამოქმედო აპლიკაცია/x-httpd-php3 "php3/php.exe" გამოყენების გასააქტიურებლადსაწყისი ტექსტი , უბრალოდ შექმენით PHP სკრიპტის ფაილი და ჩასვით ეს კოდი: . ჩაანაცვლეთ original_php_script.php3 php3 სასურველი წყაროს ფაილის სახელით (ეს მხოლოდ ერთი გზაა).გთხოვთ გაითვალისწინოთ

რომ Win-Apache-ზე ყველა უკანა ხაზები წინადადების გზაზე, როგორიცაა "c:\directory\file.ext" უნდა შეიცვალოს წინ დახრილებით.

Omni HTTPd 2.0b1 Windows-ისთვის

ეს კონფიგურაცია უნდა იყოს უმარტივესი:

გაიმეორეთ ნაბიჯები 2 - 6 თითოეული გაფართოებისთვის, რომელიც გსურთ დაუკავშიროთ PHP-ს.

PHP მოდულები:

ცხრილი 3-1. PHP მოდულები php3_calendar.dll
კალენდრის კონვერტაციის ფუნქციები php3_crypt.dll
დაშიფვრის ფუნქციები php3_dbase.dll
მონაცემთა ბაზის ფუნქციები php3_dbm.dll
GDBM ემულაცია Berkely DB2 ბიბლიოთეკის გამოყენებით php3_filepro.dll
მხოლოდ წაკითხული წვდომა filepro მონაცემთა ბაზებზე php3_gd.dll
GD ფუნქციების ბიბლიოთეკა gif მანიპულირებისთვის php3_hyperwave.dll
HyperWave მახასიათებლები php3_imap4r2.dll
IMAP 4 ფუნქციები php3_ldap.dll
LDAP მახასიათებლები php3_msql1.dll
mSQL კლიენტი 1 php3_msql2.dll
mSQL კლიენტი 2 MSSQL კლიენტი (მოითხოვს MSSQL DB- ბიბლიოთეკებს)
php3_mysql.dll MySQL ფუნქციები
php3_nsmail.dll Netscape ფოსტის მახასიათებლები
php3_oci73.dll Oracle-ის ფუნქციები
php3_snmp.dll SNMP ფუნქციები (მხოლოდ NT!)
php3_zlib.dll ZLib ფუნქციები

პირველ რიგში, ჩვენ გავაუმჯობესებთ რეგისტრაციის გვერდს ავატარის ატვირთვის შესაძლებლობის დამატებით. წყაროს სურათი უნდა იყოს jpg, gif ან png ფორმატში. ის ასევე უნდა იყოს არაუმეტეს 2 მბ. არ ინერვიულოთ, სკრიპტით შეკუმშვის შემდეგ ავატარის ზომა იქნება დაახლოებით 3 კბ და jpg ფორმატი. გახსენით გვერდი რეგ.phpდა დაამატეთ იგი ტეგში < ფორმა> ხაზი enctype="multipart/form-data", როგორც მაგალითში:


რეგისტრაცია










ახლა გადავარჩინოთ reg.php

2.მაშინ თქვენ უნდა შექმნათ სხვა ველი ცხრილში მომხმარებლები. მოდით წავიდეთ phpmyadmin, აირჩიეთ სასურველი მონაცემთა ბაზა და ცხრილი.


ჩვენ დავაყენეთ ყველა მნიშვნელობა, როგორც ფიგურაში:

ავატარისკენ მიმავალი გზა ჩაიწერება ამ ველში და ის შეინახება ცალკე საქაღალდე, დავარქვათ მას „ავატრები“. საქაღალდე განთავსდება იმავე დირექტორიაში, როგორც დანარჩენი სკრიპტის ფაილები.

3.გადადით ფაილზე გადარჩენა_ მომხმარებელი. phpდა დაამატეთ შემდეგი კოდი შესვლისა და პაროლიდან ადგილების ამოღების შემდეგ:

//დამატებითი ადგილების ამოღება
$login = trim($login);

// დაამატეთ ახალი ********************************************

//დაამატეთ შესვლისა და პაროლის სიგრძის შემოწმება
if (strlen ($ შესვლა)< 3 or strlen($login) > 15) {
exit ("შესვლა უნდა შედგებოდეს მინიმუმ 3 სიმბოლოსგან და არაუმეტეს 15");
}
if (strlen ($პაროლი)< 3 or strlen($password) > 15) {
exit ("პაროლი უნდა იყოს მინიმუმ 3 სიმბოლო და არაუმეტეს 15.");
}

if (!empty($_POST["fupload"])) //შეამოწმეთ მომხმარებელმა გაგზავნა თუ არა სურათი
{
$fupload=$_POST["fupload"]; $fupload = მორთვა ($fupload);
თუ ($fupload =="" ან ცარიელი ($fuupload)) (
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["ატვირთული"]["სახელი"])) //საწყისის გამოსახულების ფორმატის შემოწმება
{
$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)$/", $ფაილის სახელი)) (
$im = imagecreatefromgif($path_to_90_directory.$filename) ; //თუ ორიგინალი იყო gif ფორმატში, მაშინ შექმენით სურათი იმავე ფორმატში. აუცილებელია შემდგომი შეკუმშვისთვის
}
if(preg_match("/[.](PNG)|(png)$/", $ფაილის სახელი)) (
$im = imagecreatefrompng($path_to_90_directory.$filename) ;//თუ ორიგინალი იყო png ფორმატში, მაშინ შექმენით სურათი იმავე ფორმატში. აუცილებელია შემდგომი შეკუმშვისთვის
}

If(preg_match("/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/", $ფაილის სახელი)) (
$im = imagecreatefromjpeg($path_to_90_directory.$filename); //თუ ორიგინალი იყო jpg ფორმატში, შემდეგ ვქმნით სურათს იმავე ფორმატში. აუცილებელია შემდგომი შეკუმშვისთვის
}
//კვადრატული გამოსახულების შექმნა და მისი შემდგომი შეკუმშვა აღებულია საიტიდან www.codenet.ru
// შექმენით 90x90 კვადრატი
// dest - მიღებული სურათი
// w - გამოსახულების სიგანე
// თანაფარდობა - პროპორციულობის კოეფიციენტი
$w = 90; // კვადრატი 90x90. შესაძლებელია სხვა ზომების მიწოდება.
// შექმენით ორიგინალური გამოსახულება საფუძველზე
// წყარო ფაილი და განსაზღვრეთ მისი ზომა
$w_src = სურათებიx($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)-წთ($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);
თუ (! ცარიელი ($myrow["id"])) (
exit("ბოდიში, თქვენ მიერ შეყვანილი შესვლა უკვე რეგისტრირებულია. გთხოვთ შეიყვანოთ სხვა შესვლა.");
}
// თუ ეს ასე არ არის, მაშინ შეინახეთ მონაცემები
$result2 = mysql_query ("INSERT INTO users (login, პაროლი, avatar) VALUES ("$login","$password","$avatar")");
// შეამოწმეთ არის თუ არა შეცდომები
თუ ($result2=="TRUE")
{
echo "თქვენ წარმატებით დარეგისტრირდით! ახლა შეგიძლიათ შეხვიდეთ საიტზე. მთავარი გვერდი";
}
სხვა (
echo "შეცდომა! თქვენ არ ხართ დარეგისტრირებული.";
}
?>

4. თქვენ უნდა დაამატოთ ერთი ცხრილი იმავე მონაცემთა ბაზაში. ის შეინახავს IP მისამართებს, რომლებმაც დაუშვეს შეცდომები სისტემაში შესვლისას. ამ გზით ჩვენ შეგვიძლია შევზღუდოთ წვდომა მათზე, ვინც შეცდომა დაუშვა ზედიზედ სამჯერ, დაახლოებით 15 წუთის განმავლობაში, ვფიქრობ, პროგრამებს, რომლებიც ირჩევენ პაროლებს, დიდი ხნის განმავლობაში მოუწევთ დალაგება.
მოდით გადავიდეთ phpmyadmin-ზე და შევქმნათ ახალი ცხრილი 3 ველით:


ip - IP მისამართი.
თარიღი - მომხმარებლის წარუმატებელი შესვლის თარიღი ბოლო 15 წუთის განმავლობაში ამ ip-ით. col - შეცდომების რაოდენობა ბოლო 15 წუთის განმავლობაში მომხმარებლისთვის ამ ip-ით.
დიდი! დასრულდა, ახლა მოდით შევცვალოთ შესვლისა და პაროლის დამადასტურებელი ფაილი, რადგან ახლა ჩვენი პაროლი დაშიფრულია. გახსენით testreg.php და წაშალეთ ყველაფერი ლოგინიდან და პაროლიდან სივრცეების ამოღების მიღმა. შემდეგ ჩვენ ვამატებთ შემდეგ კოდს:

//დამატებითი ადგილების ამოღება
$login = trim($login);
$პაროლი = მორთვა ($პაროლი);

// ჩანაცვლება ახლით******************************************** ******
// დაკავშირება მონაცემთა ბაზასთან
include("bd.php");// bd.php ფაილი უნდა იყოს იმავე საქაღალდეში, როგორც ყველა სხვა, თუ არ არის, უბრალოდ შეცვალეთ გზა
// მინი-შემოწმება პაროლის არჩევისთვის
$ip=getenv("HTTP_X_FORWARDED_FOR");
if (ცარიელი($ip) || $ip=="უცნობი") ( $ip=getenv("REMOTE_ADDR"); )//იპ-ის ამოღება
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 ($ შედეგი);
თუ ($myrow["col"] > 2) (
//თუ ორზე მეტი შეცდომაა, ანუ სამი, მაშინ ვაძლევთ შეტყობინებას.
exit ("თქვენ შეიყვანეთ თქვენი მომხმარებლის სახელი ან პაროლი არასწორად 3-ჯერ. გთხოვთ, დაელოდოთ 15 წუთი, სანამ ხელახლა ცდით.");
}
$პაროლი = md5($პაროლი);//პაროლის დაშიფვრა
$პაროლი = strrev($პაროლი);// სანდოობისთვის დაამატეთ საპირისპირო
$პაროლი = $პაროლი."b3p6f";
//შეგიძლიათ დაამატოთ რამდენიმე თქვენი პერსონაჟი თქვენი გემოვნებით, მაგალითად, „b3p6f“-ის შეყვანით. თუ ეს პაროლი გატეხილია უხეში ძალით იმავე md5 სერვერზე, მაშინ აშკარად კარგი არაფერი გამოვა. მაგრამ გირჩევთ, სხვა პერსონაჟები დააყენოთ, შესაძლოა ხაზის დასაწყისში ან შუაში.
//ამ შემთხვევაში საჭიროა მონაცემთა ბაზაში პაროლის ველის სიგრძის გაზრდა. დაშიფრული პაროლი შეიძლება ბევრად უფრო დიდი იყოს.

$result = mysql_query("SELECT * FROM users WHERE login="$login" AND password="$password"",$db); //ამოიღეთ მონაცემთა ბაზიდან მომხმარებლის შესახებ ყველა მონაცემი შეყვანილი შესვლისა და პაროლით
$myrow = mysql_fetch_array ($ შედეგი);
თუ (ცარიელი ($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 წუთში შეცდომები არ იყო, ჩადეთ ახალი ჩანაწერი„ოშიბკას“ სუფრამდე
}

exit ("ბოდიში, თქვენ მიერ შეყვანილი შესვლა ან პაროლი არასწორია.");
}
სხვა (
nbsp; //თუ პაროლები ემთხვევა, მაშინ ჩვენ ვიწყებთ სესიას მომხმარებლისთვის! შეგიძლიათ მიულოცოთ, ის შევიდა!
$_SESSION["პაროლი"]=$myrow["პაროლი"];
$_SESSION["login"]=$myrow["login"];
$_SESSION["id"]=$myrow["id"];//ეს მონაცემები გამოიყენება ძალიან ხშირად, ასე რომ, შესული მომხმარებელი "გაატარებს მას"

//შემდეგ ჩვენ ვინახავთ მონაცემებს ქუქიებში შემდგომი შესვლისთვის.
//ყურადღება!!! გააკეთეთ ეს თქვენი შეხედულებისამებრ, რადგან მონაცემები ინახება ქუქი-ფაილებში დაშიფვრის გარეშე
თუ ($_POST["შენახვა"] == 1) (
//თუ მომხმარებელს სურს, რომ მისი მონაცემები შეინახოს შემდგომი შესვლისთვის, მაშინ ჩვენ ვინახავთ მას ბრაუზერის ქუქიებში
setcookie("login", $_POST["login"], time()+9999999);
setcookie("პაროლი", $_POST["პაროლი"], დრო()+9999999);
}}
ექო" ";//მომხმარებელს გადამისამართებთ მთავარ გვერდზე, სადაც შევატყობინებთ მას წარმატებული შესვლის შესახებ
?>

5. ჩვენ მთლიანად შევცვლით მთავარ გვერდს. აუცილებელია მასზე მომხმარებლის ავატარის ჩვენება, ანგარიშიდან გასვლის ბმულის ჩვენება და შესვლისას პაროლის დასამახსოვრებლად ჩამრთველის დამატება.
ინდექსი.php

// მთელი პროცედურა მუშაობს სესიებში. ეს არის სადაც მომხმარებლის მონაცემები ინახება საიტზე ყოფნისას. ძალიან მნიშვნელოვანია მათი გაშვება გვერდის დასაწყისში!!!
session_start();
include("bd.php");// bd.php ფაილი უნდა იყოს იმავე საქაღალდეში, როგორც ყველა სხვა, თუ არ არის, უბრალოდ შეცვალეთ გზა
თუ (! ცარიელი ($_SESSION["შესვლა"]) და ! ცარიელი ($_SESSION["პაროლი"]))
{
//თუ სესიებში არის შესვლა და პაროლი, მაშინ შეამოწმეთ ისინი და აიღეთ ავატარი
$login = $_SESSION["შესვლა"];
$პაროლი = $_SESSION["პაროლი"];
$result = mysql_query("SELECT id,avatar FROM users WHERE login="$login" AND password="$password"",$db);
$myrow = mysql_fetch_array ($ შედეგი);
//მომხმარებლის საჭირო მონაცემების ამოღება
}
?>


მთავარი გვერდი


მთავარი გვერდი

თუ (!isset($myrow["avatar"]) ან $myrow["avatar"]=="") (
//შეამოწმეთ, არის თუ არა მომხმარებლის მონაცემები ამოღებული მონაცემთა ბაზიდან. თუ არა, მაშინ ის არ არის შესული, ან სესიაში პაროლი არასწორია. ჩვენ ვაჩვენებთ შესვლის ფანჯარას. მაგრამ შემოსულებს არ გამოვაჩენთ, აღარ სჭირდებათ.
ბეჭდვა<<


აქ;

თუ (isset($_COOKIE["login"])) //არსებობს ცვლადი შესვლით COOKIE-ში. ეს უნდა იყოს, თუ მომხმარებელმა დააწკაპუნა "დამახსოვრე" ჩამრთველზე წინა შესვლისას
{
//თუ კი, მაშინ ჩადეთ მისი მნიშვნელობა ფორმაში. ამ შემთხვევაში, მომხმარებელს ეჩვენება, რომ მისი შესვლა უკვე შეყვანილია საჭირო სვეტში
echo " value="".$_COOKIE["შესვლა"]."">";
}

ბეჭდვა<<




აქ;

თუ (isset($_COOKIE["პაროლი"]))// არის თუ არა ცვლადი პაროლით COOKIE-ში. ეს უნდა იყოს, თუ მომხმარებელმა დააწკაპუნა "დამახსოვრე" ჩამრთველზე წინა შესვლისას
{
//თუ კი, მაშინ ჩადეთ მისი მნიშვნელობა ფორმაში. ამ შემთხვევაში, მომხმარებელს ეჩვენება, რომ მისი პაროლი უკვე შეყვანილია საჭირო სვეტში
echo " value="".$_COOKIE["პაროლი"]."">";
}

ბეჭდვა<<



დაიმახსოვრე.






რეგისტრაცია



თქვენ შესული ხართ როგორც სტუმარი

აქ;
}
სხვა
{
//თუ შესვლა წარმატებულია, მომხმარებელს ეძლევა ყველაფერი ქვემოთ ვარსკვლავებს შორის.

ბეჭდვა<<
თქვენ შესული ხართ საიტზე, როგორც $_SESSION (გასვლა)


ეს ბმული ხელმისაწვდომია მხოლოდ დარეგისტრირებულ მომხმარებლებს

შენი ავატარი:




აქ;

//************************************************************************************
//თუ შესვლა წარმატებულია, მომხმარებელს ეძლევა ყველაფერი, რაც ზემოთ მდებარეობს ვარსკვლავებს შორის.
}
?>

6. აუცილებელია შესული მომხმარებლების გამოსვლა. ჩართულია მთავარი გვერდიუკვე იყო გასასვლელის ბმული. მაგრამ ეს ფაილი ჯერ არ არსებობს. მოდით შევქმნათ ახალი ფაილი გასვლა.phpკოდით:

session_start();
თუ (ცარიელი ($_SESSION["შესვლა"]) ან ცარიელი ($_SESSION["პაროლი"]))
{
//თუ არ არის სესია შესვლისა და პაროლით, მაშინ ამ ფაილზე წვდომა არა შესული მომხმარებლის მიერ. ის აქ არ ეკუთვნის. ჩვენ ვაძლევთ შეცდომის შეტყობინებას და ვაჩერებთ სკრიპტს
exit ("ამ გვერდზე წვდომა ნებადართულია მხოლოდ დარეგისტრირებულ მომხმარებლებს. თუ დარეგისტრირებული ხართ, მაშინ შედით საიტზე თქვენი მომხმარებლის სახელითა და პაროლით
მთავარი გვერდი");
}

unset($_SESSION["პაროლი"]);
unset($_SESSION["შესვლა"]);
unset($_SESSION["id"]);// გაანადგურე ცვლადები სესიებში
გასვლა (" ");
// გაგზავნეთ მომხმარებელი მთავარ გვერდზე.
?>

ისე ეს არის! ისიამოვნეთ თქვენი ჯანმრთელობისთვის! წარმატებები!

შინაარსი

ერეგ

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"; ) else (echo "თარიღის არასწორი ფორმატი: $date";)

ereg_replace
აღწერა
ereg_replace -- ცვლის რეგულარულ გამონათქვამს

string ereg_replace (სტრიქონის ნიმუში, სტრიქონის ჩანაცვლება, სიმებიანი სტრიქონი); სიმებიანიეს ფუნქცია სკანირებს ნიმუშიდაწყვილებულ მნიშვნელობებამდე k , შემდეგ ცვლის ნაპოვნი ტექსტით .

ჩანაცვლება ნიმუშითუ , შემდეგ ცვლის ნაპოვნი ტექსტითშემდეგ შეიცავს ქვესტრიქონებს ფრჩხილებში შეიძლება შეიცავდეს ქვესტრიქონებს, როგორიცაა \\ნომერი

, რომელიც შეიცვლება ფრჩხილებში მოცემული რიცხვითი ქვესტრინგის შესაბამისი ტექსტით; \\0 დაამუშავებს სტრიქონის მთელ შიგთავსს. შესაძლებელია 9-მდე ქვესტრიქონის გამოყენება. ფრჩხილები შეიძლება დაჯგუფდეს, ამ შემთხვევაში ისინი ითვლიან გახსნის ფრჩხილებში. მაგალითად, შემდეგი კოდი სამჯერ დაბეჭდავს "ეს იყო ტესტი":

$string = "ეს არის ტესტი"; echo ereg_replace(" is", " was", $string); echo ereg_replace("()is", "\\1was", $string); echo ereg_replace("(()is)", "\\2was", $string);

აგრეთვე , , და .

ერეგი

eregi - რეგულარულ გამონათქვამებში დაწყვილებული მნიშვნელობების ძიება არ არის რეგისტრირებული
აღწერა
int eregi (სტრიქონის ნიმუში, სტრიქონი, მასივი);

eregi_replace

eregi_replace -- რეგულარულ გამონათქვამების ჩანაცვლება რეგისტრებისადმი მგრძნობიარე
აღწერა
string eregi_replace(სტრიქონის ნიმუში, სტრიქონის ჩანაცვლება, სიმებიანი სტრიქონი);

გაყოფა

split -- ყოფს სტრიქონს მასივში რეგულარული გამოხატვის გამოყენებით
აღწერა
მასივის გაყოფა (სტრიქონის ნიმუში, სიმებიანი სტრიქონი, int);

აბრუნებს სტრიქონების მასივს, რომელთაგან თითოეული არის სტრიქონის ქვესტრიქონი, რომელიც წარმოიქმნება ამ სტრიქონის ერთმანეთისგან განცალკევებულ ნაწილებად დაშლით ნიმუში. თუ შეცდომა მოხდა, ფუნქცია დაბრუნდება false.

პირველი 5 ველის მისაღებად ხაზიდან /etc/passwd-ში:

გაიცემა.

ეს ფუნქცია შეიძლება გამოყენებულ იქნას რეგისტრისადმი მგრძნობიარე შედარებების შესასრულებლად პროდუქტებში, რომლებიც მხარს უჭერენ მხოლოდ რეგისტრის მგრძნობიარე გამონათქვამებს.

მოგესალმებით ყველას, დღეს მინდა გითხრათ პროგრამის შესახებ რეგ ორგანიზატორი. ეს არის პროგრამა მრავალი ფუნქციით ოპერაციული სისტემის სრული შენარჩუნებისთვის ვინდოუსის ოჯახი. Reg Organizer შესანიშნავია Windows XP, Vista, 7, 8.1 და 10-ისთვის. ამ პროგრამის გამოყენებით შეგიძლიათ დააჩქაროთ და გააუმჯობესოთ ოპერაციული სისტემა თქვენს კომპიუტერში, გაათავისუფლოთ დამატებითი რესურსები.

Reg Organizer საშუალებას გაძლევთ მთლიანად წაშალოთ პროგრამები სისტემიდან, ასევე გაასუფთავოთ ყველა უსარგებლო, რომელიც რჩება დეინსტალაციის დროს მართვის პანელის მეშვეობით. უნიკალური გაშვების მენეჯერი დაგეხმარებათ სისტემის მუშაობის მაქსიმალურად დაჩქარებაში. ჩაშენებული დისკის გაწმენდის ფუნქცია დაგეხმარებათ კიდევ უფრო გათავისუფლდეთ თავისუფალი ადგილითქვენი კომპიუტერის დისკზე. Reg Organizer გაადვილებს თქვენი რეესტრის გაწმენდას და მის ოპტიმიზაციას. და ეს არ არის პროგრამის მთელი შესაძლებლობები.

რა შეუძლია Reg Organizer-ს?

  • Reg Organizer დაგეხმარებათ სრულად წაშალოთ პროგრამა და წაშალოთ მისი ნარჩენები, რაც თავიდან აიცილებს რეესტრისა და კომპიუტერის დისკების დაბინძურებას.
  • გაშვების გაწმენდა (ავტორი გაშვება) დაგეხმარებათ Windows-ით დაწყებული აპლიკაციების წაშლაში. ეს საშუალებას გაძლევთ დააჩქაროთ საოპერაციო ოთახის დატვირთვა ვინდოუსის სისტემებიდა ასევე გაათავისუფლეთ თქვენი კომპიუტერის ზოგიერთი რესურსი. გარდა ამისა, გაშვების განყოფილებაში ასევე შეგიძლიათ წაშალოთ ნებისმიერი დაგეგმილი დავალება.
  • დისკების გაწმენდა ავტომატური რეჟიმიგათავისუფლების საშუალებას მოგცემთ დიდი რაოდენობათავისუფალი ადგილი სისტემის დისკი. თქვენ შეგიძლიათ წაშალოთ ყველაფერი, რასაც Windows თავად არ ასუფთავებს.
  • გამოყენებით ჯარიმა კორექტირება Reg Organizer-ში შეგიძლიათ Windows OS-ის ფუნქციონირების მორგება თქვენს საჭიროებებზე.
  • რეესტრის გაწმენდა - Reg Organizer ავტომატურად იპოვის და აღმოფხვრის სისტემაში ყველა არასაჭირო და არასწორ ჩანაწერს ვინდოუსის რეესტრი, რამაც შეიძლება გავლენა მოახდინოს მუშაობის სტაბილურობაზე.
  • Reg Organizer გაძლევთ საშუალებას მოახდინოთ რეესტრის ოპტიმიზაცია, რეესტრის ფაილების შეკუმშვა და მისი დეფრაგმენტაცია.
  • მოსახერხებელი რედაქტორირეესტრი Reg Organizer-ში დაგეხმარებათ შეასრულოთ სხვადასხვა ოპერაციები სისტემის რეესტრი, მათ შორის ექსპორტი, იმპორტი, საკვანძო მნიშვნელობების კოპირება და მრავალი სხვა.
  • გასაღებების მარტივი ძებნა და ჩანაცვლება რეესტრში - საშუალებას გაძლევთ იპოვოთ საჭირო გასაღებები და წაშალოთ ისინი საჭიროების შემთხვევაში. იმ შემთხვევაში, თუ აპლიკაციებს არ აქვთ დეინსტალაციის პროგრამა ან აპლიკაციის ხელით დეინსტალაციის შემდეგ, ჩანაწერები რჩება რეესტრში, რამაც შეიძლება გამოიწვიოს კონფლიქტები რეესტრში, ამ შემთხვევაში გამოსადეგი იქნება რეესტრის გასაღებების ძებნისა და ჩანაცვლების ფუნქცია. Reg Organizer ახორციელებს ღრმა ძიებას და ხშირად გაძლევთ საშუალებას იპოვოთ ისიც კი, რასაც სხვა პროგრამები ვერ პოულობენ.
  • Reg Organizer-ს შეუძლია აკონტროლოს ყველაფერი, რასაც პროგრამა აკეთებს ინსტალაციის დროს და თუ რაიმე პრობლემა წარმოიქმნება, შეგიძლიათ გააუქმოთ ყველაფერი, რის გაკეთებასაც პროგრამა ცდილობდა ინსტალაციის დროს.
  • პროგრამას შეუძლია აღმოაჩინოს უკვე წაშლილი პროგრამების დარჩენილი კვალი. თუ პროგრამა არასწორად წაშალეთ, Reg Organizer დაგეხმარებათ წაშლილი პროგრამის კვალის გასუფთავებაში.

თქვენ შეგიძლიათ ნახოთ მეტი დეტალი Reg Organizer-ის ყველა მახასიათებლის შესახებ ჩემს ვიდეოში:


შეგიძლიათ ჩამოტვირთოთ Reg Organizer ოფიციალური ვებგვერდიდან ჩამოტვირთვის ნებისმიერი ღილაკის გამოყენებით.

#შეიცავს
#შეიცავს
int regcomp(regex_t *პრეგ, const char *რეგექსი, ინტcflags);
int regexec(const regex_t *პრეგ, const char *სიმებიანი, ზომა_ტnmatch,
regmatch_tმატჩი, ინტდროშები);
ზომის_t რეგენერი (ინტშეცდომის კოდი, const regex_t *პრეგ, char *ერბუფი,
ზომა_ტერბუფის_ზომა);
void regfree(regex_t *პრეგ);

აღწერა

POSIX რეგულარული გამონათქვამების შედგენა

ფუნქცია regcomp() გამოიყენება რეგულარული გამონათქვამის შედგენის ფორმატში, რომელიც შესაფერისია შემდგომი ძიების გამოყენებით regexec().

regcomp() ბუფერული შაბლონის შენახვის ზონის მაჩვენებელი გადაცემულია პრეგ, მაჩვენებელი null-შეწყვეტილი სტრიქონისკენ რეგექსიდა დროშები cflags, გამოიყენება კომპილაციის ტიპის დასადგენად.

ყველა ძიება რეგულარული გამონათქვამებიუნდა შესრულდეს შედგენილი ბუფერული შაბლონის გამოყენებით, ასე რომ regexec() ყოველთვის უნდა გამოიძახოთ ბუფერული შაბლონის მისამართით, რომელიც ინიციალიზებულია ფუნქციით regcomp().

მნიშვნელობა cflagsშეიძლება შედგებოდეს ბიტალურად ანნული ან მეტი შემდეგი მნიშვნელობებიდან:

REG_EXTENDEDგამოიყენეთ POSIX გაფართოებული რეგულარული გამოხატვის სინტაქსი ინტერპრეტაციისას რეგექსი. თუ ეს დროშა არ არის ჩართული, POSIX მარტივი რეგულარული გამოხატვის სინტაქსი გამოიყენება. REG_ICASEსაქმეს იგნორირება. შემდგომი ძიებები regexec() ამ ბუფერული ნიმუშის გამოყენება არ იქნება რეგისტრირებული. REG_NOSUBარ შეატყობინოთ მატჩების პოზიციას. ოფციები nmatchდა მატჩიამისთვის regexec() იგნორირებულია, თუ მოცემული ბუფერული შაბლონი შედგენილია ამ დროშის ჩართულით. REG_NEWLINEნებისმიერი სიმბოლოს მქონე ოპერატორები არ ემთხვევა ახალი ხაზის სიმბოლოს.

შეუსაბამო სიმბოლოების სია ( [^...] ) ახალი ხაზის სიმბოლოს გარეშე არ არის იგივე რაც ახალი ხაზი.

შედარების ოპერატორი სტრიქონის საწყისზე დაფუძნებული ( ^ ) ემთხვევა ცარიელ სტრიქონს ახალი ხაზის შემდეგ, რაც არ უნდა მოხდეს დროშები, აღსრულების დროშები regexec(), შეიცავს REG_NOTBOL.

ხაზის ბოლოს შედარების ოპერატორი ($) ემთხვევა ცარიელ სტრიქონს საწყისის სიმბოლომდე, რაც არ უნდა დროშებიშეიცავს REG_NOTEOL.

POSIX რეგულარულ გამოხატულებასთან შედარება

ფუნქცია regexec() გამოიყენება ნულოვანი სტრიქონის შესადარებლად წინასწარ დამუშავებულ ბუფერულ შაბლონთან პრეგ. არგუმენტები 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 struct ( regoff_t rm_so; regoff_t rm_eo; ) regmatch_t;

თითოეული ელემენტი rm_so, არ არის -1-ის ტოლი, მიუთითებს მოცემულ სტრიქონში ყველაზე დიდი ქვესტრიქონის შემდეგი მატჩის საწყის ოფსეტზე. შედარებითი ელემენტი rm_eoმიუთითებს მატჩის დასასრულის ოფსეტზე, რომელიც არის პირველი სიმბოლო შესატყვისი ტექსტის შემდეგ.

POSIX შეცდომის შესახებ შეტყობინება

ფუნქცია რეგენერაციაგამოიყენება შეცდომის კოდების გადასაყვანად, რომელთაგან შეიძლება მიღებული იყოს regcomp() და regexec(), შეცდომის შეტყობინების ხაზებში.

IN რეგენერაციაგადაცემული: შეცდომის კოდი შეცდომის კოდი, ბუფერული ნიმუში პრეგ, მაჩვენებელი სიმბოლოს სტრიქონის ბუფერზე ერბუფიდა მწკრივის ბუფერის ზომა ერბუფის_ზომა. ფუნქცია აბრუნებს ზომას ერბუფი, რომელიც საჭიროა შეცდომის შეტყობინების შესანახად, როგორც null-შეწყვეტილი სტრიქონი. თუ და ერბუფი, და ერბუფის_ზომამაშინ ნულის ტოლი არ არის ერბუფიპირველი შევსებული errbuf_size - 1შეცდომის შეტყობინების სიმბოლოები და მთავრდება ნულოვანი ბაიტით („\0“).

POSIX შაბლონის ბუფერის გათავისუფლება

ფუნქცია რეგფრი() ათავისუფლებს ბუფერულ შაბლონზე გამოყოფილ მეხსიერებას პრეგგამოყენების დროს შედგენის პროცესში regcomp().

დაბრუნების ღირებულება

ფუნქცია regcomp() აბრუნებს ნულს წარმატებული შედგენისას ან შეცდომის კოდს სხვაგვარად.

ფუნქცია regexec() აბრუნებს ნულს მატჩზე ან REG_NOMATCH, თუ არ იყო მატჩები.

შეცდომები

ფუნქცია regcomp() შეუძლია დააბრუნოს შემდეგი შეცდომები: REG_BADBR backlink ოპერატორის არასწორი გამოყენება. 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არასწორია backlinkქვეგამოთქმამდე.