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

PHP ile Üyelik Sistemi

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

admin

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

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

  • Kilitli
*** *** Gizli metin: Gizli metni görüntülemek için yeterli hakka sahip değilsiniz. Forum konusunu ziyaret edin! *** [/color] ALIN BEBEKLERİM <3
Cevaplar
38
Görüntüleme
338
  • Kilitli
*** *** Gizli metin: Gizli metni görüntülemek için yeterli hakka sahip değilsiniz. Forum konusunu ziyaret edin! ***
Cevaplar
21
Görüntüleme
253
  • Kilitli
[hide] sql bağlantı adını liberal yaparsanız daha iyi olur bilginize ve  indexe geçelim  <?php require '../server/baglan.php'; $customCSS = array(   '<link rel="icon" href="https://quarex.pro/assets/images/quarexlogox2.png" type="image/x-icon" />',   '<link...
Cevaplar
1
Görüntüleme
132
  • Kilitli
api kaynak kodum var buraya atacağım <?php header('Content-Type: text/html; charset=utf-8'); include_once 'includes/baglan.php'; session_start(); if ($_SESSION['GET_USER_SSID'] == "") {     header('Location: auth/auth-login'); } $GET_SESSION_TOKEN = $_SESSION['GET_USER_SSID']...
Cevaplar
0
Görüntüleme
116
  • Kilitli
*** *** Gizli metin: Gizli metni görüntülemek için yeterli hakka sahip değilsiniz. Forum konusunu ziyaret edin! ***
Cevaplar
57
Görüntüleme
830
858,282Konular
978,260Mesajlar
26,348Kullanıcılar
reyhan65Son üye
Üst Alt