Forumda yenilikler devam etmektedir , çalışmalara devam ettiğimiz kısa süre içerisinde güzel bir görünüme sahip olduk daha iyisi için lütfen çalışmaların bitmesini bekleyiniz. Tıkla ve Git
x

Son konular

PHP ile Üyelik Sistemi

Hoş geldin! bantu tarafından topluluğumuza katılmaya davet edildiniz. Kaydolmak için lütfen burayı tıklayın.
PHP ile Üyelik Sistemi
0
336

admin

(¯´•._.• Webmaster •._.•´¯)
Yönetici
Modaratör
Katılım
Ara 27, 2022
Mesajlar
210
Etkileşim
3,941
Puan
0
Yaş
37
Konum
Adana
Web sitesi
forumdas.com.tr
F-D Coin
3,884

Bu yazıda PHP'yi kullanarak web siteniz için nasıl bir üyelik sistemi (giriş / kayıt) oluşturacağınızı öğreneceğiz.​



AŞLAMADAN ÖNCE


Bu eğiticiye başlamadan önce şunlardan emin olun:

+ PHP sürümünüzü 5.6 veya üzeri olarak ayarladınız . PHP 7.0 tavsiyemizdir.
Bunu yapmak için cPanel’e gidin ve ardından ‘Ayarlar’>>
‘Genel’> “Aşağı kaydır”> “PHP Versiyonu”> “5.6 ‘

+ Bir veritabanı oluşturduk
Bunu yapmak için, cPanel’inize gidin, Veritabanları yönet’e tıklayın, ardından
bir veritabanı oluşturun. Veritabanı kimlik bilgilerini bir yere kaydedin,
çünkü daha sonra kullanacağız.

+ Bu kod satırını .htaccess’e eklediniz.
php_flag output_buffering on

TUTARI


VERİTABANI


  1. PhpMyAdmin’e gidin ve veritabanı kimlik bilgilerinizle giriş yapın.
  2. Veritabanını tıklayın (örn. Id3456_cksoft), daha sonra SQL üzerine tıklayın ve aşağıdaki kodu yapıştırın NOT EXISTS OLMADAN TABLO OLUŞTURMA users(
  3. Kod:
    userIdint (11) NOT NULL AUTO_INCREMENT,
    userNamevarchar (30) NOT NULL,
    userEmailvarchar (60) NOT NULL,
    userPassvarchar (255) NOT NULL,
    PRİMER KEY ( userId),
    UNIQUE KEY userEmail( userEmail)
    ) ENGINE = InnoDB VARSAYILAN CHARSET = utf8 AUTO_INCREMENT = 1;
Sonra GİT e tıklayın

Sonuç:

Kullanıcı bilgilerini saklamamız gereken bir tablo oluşturduk .

HTML ve PHP


Veritabanına bağlanma

Dbconnect.php adlı bir dosya oluşturun ve içine şu kodu ekleyin
Kod:
<?php

 error_reporting( ~E_DEPRECATED & ~E_NOTICE );
 
 define('DBHOST', 'localhost');
 define('DBUSER', 'root');
 define('DBPASS', '1234');
 define('DBNAME', 'dbtest');
 
 $conn = mysqli_connect(DBHOST,DBUSER,DBPASS);
 $dbcon = mysqli_select_db($conn,DBNAME);
 
 if ( !$conn ) {
  die("Connection failed : " . mysqli_error());
 }
 
 if ( !$dbcon ) {
  die("Database Connection failed : " . mysqli_error());
 }
?>
Şimdi şunu değiştirin:
  • DBUSER, ‘cPanel’>> ‘Veritabanlarını yönet’ bulunan veritabanı kullanıcısı ile.
  • DBPASS ile veritabanı şifrenizi.
  • DBNAME, ‘cPanel’ de bulunan veritabanı adınızla>> ‘Veritabanlarını yönetin’.


Giriş sayfası

Login.php adlı bir dosya oluşturun ve şu kodu ekleyin:


Kod:
<?php
     ob_start();
     session_start();
     include_once 'dbconnect.php';

     if ( isset($_SESSION['user'])!="" ) {
      header("Location: home.php");
      exit;
     }
   
     $error = false;
   
     if( isset($_POST['btn-login']) ) {
     
      $email = trim($_POST['email']);
      $email = strip_tags($email);
      $email = htmlspecialchars($email);
     
      $pass = trim($_POST['pass']);
      $pass = strip_tags($pass);
      $pass = htmlspecialchars($pass);
     
      if(empty($email)){
       $error = true;
       $emailError = "Please enter your email address.";
      } else if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) {
       $error = true;
       $emailError = "Please enter a valid email address.";
      }
     
      if(empty($pass)){
       $error = true;
       $passError = "Please enter your password.";
      }
     
      if (!$error) {
     
       $password = hash('sha256', $pass);
     
       $res=mysqli_query($conn,"SELECT userId, userName, userPass FROM users WHERE userEmail='$email'");
       $row=mysqli_fetch_array($res);
       $count = mysqli_num_rows($res);
     
       if( $count == 1 && $row['userPass']==$password ) {
        $_SESSION['user'] = $row['userId'];
        header("Location: home.php");
       } else {
        $errMSG = "Incorrect Credentials, Please try again...";
       }
       
      }
     
     }
    ?>
 

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>000Webhost membership system</title>
    </head>
    <body>

    <div class="container">

     <div id="login-form">
        <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" autocomplete="off">
       
         <div class="col-md-12">
           
             <div class="form-group">
                 <h2 class="">Sign In.</h2>
                </div>
           
             <div class="form-group">
                 <hr />
                </div>
               
                <?php
       if ( isset($errMSG) ) {
       
        ?>
        <div class="form-group">
                 <div class="alert alert-danger">
        <span class="glyphicon glyphicon-info-sign"></span> <?php echo $errMSG; ?>
                    </div>
                 </div>
                    <?php
       }
       ?>
               
                <div class="form-group">
                 <div class="input-group">
                    <span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span>
                 <input type="email" name="email" class="form-control" placeholder="Your Email" value="<?php echo $email; ?>" maxlength="40" />
                    </div>
                    <span class="text-danger"><?php echo $emailError; ?></span>
                </div>
               
                <div class="form-group">
                 <div class="input-group">
                    <span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
                 <input type="password" name="pass" class="form-control" placeholder="Your Password" maxlength="15" />
                    </div>
                    <span class="text-danger"><?php echo $passError; ?></span>
                </div>
               
                <div class="form-group">
                 <hr />
                </div>
               
                <div class="form-group">
                 <button type="submit" class="btn btn-block btn-primary" name="btn-login">Sign In</button>
                </div>
               
                <div class="form-group">
                 <hr />
                </div>
               
                <div class="form-group">
                 <a href="signup.php">Sign Up Here...</a>
                </div>
           
            </div>
     
        </form>
        </div>

    </div>

    </body>
    </html>
    <?php ob_end_flush(); ?>

Kayıt sayfası

Signup.php adlı bir dosya oluşturun ve şu kodu ekleyin:


Kod:
<?php
 ob_start();
 session_start();
 if( isset($_SESSION['user'])!="" ){
  header("Location: home.php");
 }
 include_once 'dbconnect.php';

 $error = false;

 if ( isset($_POST['btn-signup']) ) {
 
  $name = trim($_POST['name']);
  $name = strip_tags($name);
  $name = htmlspecialchars($name);
 
  $email = trim($_POST['email']);
  $email = strip_tags($email);
  $email = htmlspecialchars($email);
 
  $pass = trim($_POST['pass']);
  $pass = strip_tags($pass);
  $pass = htmlspecialchars($pass);
 
  if (empty($name)) {
   $error = true;
   $nameError = "Please enter your full name.";
  } else if (strlen($name) < 3) {
   $error = true;
   $nameError = "Name must have atleat 3 characters.";
  } else if (!preg_match("/^[a-zA-Z ]+$/",$name)) {
   $error = true;
   $nameError = "Name must contain alphabets and space.";
  }
 
  if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) {
   $error = true;
   $emailError = "Please enter valid email address.";
  } else {
   $query = "SELECT userEmail FROM users WHERE userEmail='$email'";
   $result = mysqli_query($conn,$query);
   $count = mysqli_num_rows($result);
   if($count!=0){
    $error = true;
    $emailError = "Provided Email is already in use.";
   }
  }
  if (empty($pass)){
   $error = true;
   $passError = "Please enter password.";
  } else if(strlen($pass) < 6) {
   $error = true;
   $passError = "Password must have atleast 6 characters.";
  }
 
  $password = hash('sha256', $pass);
 
  if( !$error ) {
 
   $query = "INSERT INTO users(userName,userEmail,userPass) VALUES('$name','$email','$password')";
   $res = mysqli_query($conn,$query);
   
   if ($res) {
    $errTyp = "success";
    $errMSG = "Successfully registered, you may login now";
    unset($name);
    unset($email);
    unset($pass);
   } else {
    $errTyp = "danger";
    $errMSG = "Something went wrong, try again later...";
   }
   
  }
 
 
 }
?>
 

<!DOCTYPE html>
<html>
<head>
<title>Sign Up - 000webhost membership system</title>
</head>
<body content="width=device-width,initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<center>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" autocomplete="off">             <h2 class="">Sign Up.</h2>
             <hr />
            <?php
   if ( isset($errMSG) ) {
   
    ?>
    <span class="glyphicon glyphicon-info-sign"></span> <?php echo $errMSG; ?>
                </div>
             </div>
                <?php
   }
   ?>
           
                <span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
             <input type="text" name="name" class="form-control" placeholder="Enter Name" maxlength="50" value="<?php echo $name ?>" />
                <span class="text-danger"><?php echo $nameError; ?></span>
            <br>
                <span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span>
             <input type="email" name="email" class="form-control" placeholder="Enter Your Email" maxlength="40" value="<?php echo $email ?>" />
                <span class="text-danger"><?php echo $emailError; ?></span>
            </div>
            <br>
                <span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
             <input type="password" name="pass" class="form-control" placeholder="Enter Password" maxlength="15" />
                <span class="text-danger"><?php echo $passError; ?></span>
            <br>
            <div class="form-group">
             <hr />
             <button type="submit" class="btn btn-block btn-primary" name="btn-signup">Sign Up</button>
             <hr />
             <a href="login.php">Already have an account? Sign in !</a>
    </form>
  </center>
</body>
</html>
<?php ob_end_flush(); ?>

Ana sayfa

Başarılı bir oturum açtıktan sonra kullanıcı ana sayfa adı verilen bir sayfaya yönlendirilir. Home.php adlı bir dosya oluşturun ve şu kodu ekleyin:


Kod:
<?php
 ob_start();
 session_start();
 require_once 'dbconnect.php';
 
 if( !isset($_SESSION['user']) ) {
  header("Location: login.php");
  exit;
 }
 $res=mysqli_query($conn,"SELECT * FROM users WHERE userId=".$_SESSION['user']);
 $userRow=mysqli_fetch_array($res);
?>
 

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Welcome - <?php echo $userRow['userName']; ?></title>
</head>
<body>

<h1>This page is only visible for logged in users<h1>
<a href="logout.php?logout">Logout</a>
</body>
</html>
<?php ob_end_flush(); ?>

Çıkış sayfası

Logout.php adlı bir dosya oluşturun ve şu kodu ekleyin:


Kod:
<?php
 session_start();
 if (!isset($_SESSION['user'])) {
  header("Location: index.php");
 } else if(isset($_SESSION['user'])!="") {
  header("Location: home.php");
 }
 
 if (isset($_GET['logout'])) {
  unset($_SESSION['user']);
  session_unset();
  session_destroy();
  header("Location: login.php");
  exit;
 }
?>

Sonuç:


5 dosyayı yarattık:
  • dbconnect.php veritabanına bağlanmak ve doğru veritabanını seçmek
  • login.php kullanıcıların oturum
açması + signup.php kullanıcıların kaydolması için
  • home.php oturum açmış kullanıcılar
  • logout.php kullanıcılardan çıkmak için

DİKKAT EDİN


Bu kod parçasını, oturum açmış kullanıcıların yalnızca erişmesini istediğiniz her sayfanın üst kısmına ekleyin



Kod:
<?php
 ob_start();
 session_start();
 require_once 'dbconnect.php';
 
 if( !isset($_SESSION['user']) ) {
  header("Location: index.php");
  exit;
 }
 $res=mysqli_query($conn,"SELECT * FROM users WHERE userId=".$_SESSION['user']);
 $userRow=mysqli_fetch_array($res);
?>

SONUÇ


Umarım bu eğitici yazımızdan hoşlanırsınız.
Daha fazla yardıma ihtiyacınız olursa, burada yeni bir yorum oluşturun. Size yardımcı olmaktan memnuniyet duyarız!
 

Similar threads

DOM Document Object Model kelimesinin kısaltılmasından gelir ve Türkçe karşılığı Belge Nesne Modelidir. DOM, HTML, XML gibi belgelerin diğer programlama dilleri veya script dilleriyle iletişim kurabilmesini sağlamak için geliştirilmiş bir arabirimdir. Programlama dillerinde sıkça karşımıza...
Cevaplar
0
Görüntüleme
518
INDENT 6HTML DOM Nedir?INDENT DOM Document Object Model kelimesinin kısaltılmasından gelir ve Türkçe karşılığı Belge Nesne Modelidir DOM, HTML, XML gibi belgelerin diğer programlama dilleri veya script dilleriyle iletişim kurabilmesini sağlamak için geliştirilmiş bir arabirimdir Programlama...
Cevaplar
0
Görüntüleme
171
Daha önce şu yazıda HTML’de checkbox ve radio button kullanımı örneğini göstermiştim. Fakat checkbox’un HTML ve PHP ile kullanımı normal form elemanlarından biraz farklı. Checkbox olayını iki farklı şekilde kullanabiliriz, birincisi sıkca gördüğümüz tek bir checkbox ile şartları kabul etme...
Cevaplar
0
Görüntüleme
629
858,505Konular
982,547Mesajlar
33,028Kullanıcılar
buraktpccSon üye
Üst Alt