CPanel'de Veritabanı İşlemleri'nde Sorun

Bu konuyu görüntüleyen kullanıcılar Konu (Kayıtlı: 0, Misafir: 1)

mali2012

Üyecik
Merhabalar. Bir Site hazırladım ve internette görmek için yükledim. Dosyalarım localhost'ta iken veritabanı bilgilerini; " host: localhost;" , "kullanıcı: root" gibi oluşturmuştum ama şimdi gerçek sunucuya geçince o bilgileri değiştirdim. Yalnız oturum açamıyorum şu an. Sayfa boş geliyor. Benim merak ettiğim gerçek sunucuda veritabanı bilgilerini kendi dosyamın içine girerken, mesela "abcxsd_veritabaniadi" , "abcxsd_kullaniciadi" gibi mi gireceğim dosyamın içine yoksa "_kullaniciadi" şeklinde mi veya sadece "kullaniciadi" şeklinde mi? Çünkü hiç biri işe yaramadı ve nasıl olacağını bilemedim.
 
cPanel'de MySQL veritabanı oluştururken ilk adım zaten belirttiği üzere veritabanı.
İkinci adım ise kullanıcı'dır.

site_kullanici
site_veritabani
Şeklinde yapmanız gerekmektedir.
 

mali2012

Üyecik
Merhabalar. Yaptığım bağlantıyı kontrol edebilir misiniz?

baglanti.php
PHP:
<?php

$servername = 'www.abc.site';
$username = 'abc_kullaniciadi';
$password = '12345';
$database = 'abc_kullaniciadi'

  $conn = mysqli_connect($servername, $username, $password, $database);
 
  if($conn) {
    echo "Veritabanı Bağlantısı Sağlandı";
  } else {
  echo "Veritabanı Bağlantısı Sağlanamadı";
}

?>
header.php
PHP:
<?php  session_start();

if (isset($_SESSION['admin'])) {

?>


  Eğer admin olarak oturum açarsa bu kısım çalışacak
 


     <?php }  elseif (!isset($_SESSION['admin'])) {  ?>


  Eğer normal kullanıcı olarak oturum açarsa bu kısım çalışacak


            <?php  } else { ?>


  değilse bu kısım çalışacak


    <?php  }  ?>
giris.php
PHP:
<?php  session_start();

include "baglanti.php";

$k_adi = $_POST['kullanici_adi'];
$sifre = $_POST['sifre'];

$admin_adi = "admin";
$admin_sifre = "5";

if (isset($_POST["login"])) {


    if ($k_adi == $admin_adi) {
        $_SESSION['admin'] = $k_adi;
        header("Location: index.php");

    } elseif ($k_adi != $admin_adi) {
        $_SESSION['user'] = $k_adi;
        header("Location: index.php");

    } else {

        echo "Böyle bir kullanıcı mevcut değil";
        header("Location: giris-formu.php");

    }
}

?>
giris-formu.php
PHP:
<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="css/bootstrap.css">
    <link rel="stylesheet" href="fontawesome/css/fontawesome-all.min.css" />
    <link rel="stylesheet" href="css/giris.css" />
    <title>Page Title</title>
</head>
<body>

    <div class="giris-arkaplan">


        <!--  <button class="giris-formu-anasayfa-butonu text-center">Anasayfa</button>  -->



        <div class="giris-formu-yazisi">Giriş Formu</div>

        <form action="giris.php" method="POST">

            <div class="form">
                <label class="kullaniciadi">Kullanıcı Adınız</label>
                <input class="eposta" type="textbox" name="kullanici_adi" required="">

                <label class="sifre">Şifreniz</label>
                <input class="" type="password" name="sifre" class="" required=""><br>

                <button class="giris-butonu" method="" name="login">Giriş Yap</button>

                <div class="giris-formu-anasayfa-butonu"><a href="index.php">Anasayfa</a></div>
            </div>

        </form>

        <!--    </div>   -->

    </body>
    </html>
error_log
Kod:
Cannot modify header information - headers already sent by (output started at /home/abc/public_html/baglanti.php:13) in /home/abc/public_html/giris.php on line 16
giris.php çıktısı ise "Veritabanına bağlantı sağlanamadı"
Problemin çözümü nedir acaba?
 
PDO yapısını kullanmanızı öneririm.

PHP:
try {
     $conn = new PDO("mysql:host=localhost;dbname=test", "root", "password");
} catch ( PDOException $e ){
     print $e->getMessage();
}
 

mali2012

Üyecik
Size zahmet bana, önce "bağlanti.php" sonra da "giriş.php" sayfasındaki session'ı nasıl oluşturacağım, bir yazabilr misiniz? İnternetten 1 haftadır buna uğraşıyorum. Login sayfası oluşturacağım ve "giris.php" sayfasında da oturum açacağım. Mesela [U][I] [т]σятυє[/I][/U] pdo ile "bağlanti.php" sayfasını oluşturmuş oldu. Bunu "giris.php" yi de ona göre ouşturabilir misiniz?

Şimdi ben bildiklerimi yazayım.

<?php session_start(); ---------------> Session 'ı en üste koydum.

include "baglanti.php"; ---------------> Veritabanı oluşturduğum sayfayı dahil ettim.

$k_adi = $_POST['kullanici_adi'];
$sifre = $_POST['sifre'];

$admin_adi = "admin";
$admin_sifre = "5";

if (isset($_POST["login"])) { ---------------> Veriyi varsa

if ($k_adi == $admin_adi) { ---------------> formdan gelen veri "admin-adı" verisine eşitse
$_SESSION['admin'] = $k_adi; ---------------> admin adında oturum oluştur ve "$k_adı" değişkenine eşitle.
header("Location: index.php"); ---------------> Oturum oluştuysa "index.php" ye gönder.

} elseif ($k_adi != $admin_adi) { ---------------> formdan gelen veri "admin-adı" verisine eşit değilse
$_SESSION['user'] = $k_adi; ---------------> user adında oturum oluştur.
header("Location: index.php"); ---------------> "index.php" ye gönder

} else { ---------------> hiç biri uymuyorsa

echo "Böyle bir kullanıcı mevcut değil"; ---------------> "Böyle bir kullanıcı mevcut değil" uyarısını ver.
header("Location: giris-formu.php"); ---------------> giris-formu.php ye gönder

}
}

?>

Bu kodlarda bir hata var mı acaba?
 
Çok vaktim olmadığı için örnek yazdım, siz kendi projenize göre düzenleyin. Session'u 50 kere vermenize gerek yok, defalarca vermeniz de iyi değil (Tek bir yerde 1 kere verin tüm sayfalarda geçerli kılınsın.). Size önerim Framework kullanmanız.


baglanti.php
PHP:
<?php
session_start();
try {
     $conn = new PDO("mysql:host=localhost;dbname=db_name", "root", "password");
} catch ( PDOException $e ){
     print $e->getMessage();
}

giris.php
PHP:
<?php
require_once("baglanti.php");

if (isset($_POST['login'])) {
  $username = $_POST['username'];
  $password = $_POST['password'];
  $auth = $conn->prepare("SELECT * FROM user WHERE username = ?");
  $auth->execute([$username]);
  $username = $auth->fetch();
    if ($username && $password === $username['password']) {
        $_SESSION['user_id'] = $username['id'];
        header("Refresh:0; url=/panel.php");
     } else {
        $result = "Kullanıcı Adı veya Şifre yanlış.";
        return $result;
    }
 }
?>
 
Uzak MySQL sunucusuna mı bağlanmaya çalışıyorsun? Bilgileri doğru yazdın mı? Local'de bulunan MySQL sunucusu portu 3306 mı?
 

mali2012

Üyecik
Evet

$db = new PDO("mysql:host=www.site.com; dbname=abc_veritabaniadi; charset=utf8", "abc_kullaniciadi", "232145687aacv");

Şurada bir hata var mı? Bu kod hata veriyor
Mesaj otomatik birleştirildi:

giris.php sayfasındaki
PHP:
if ($username && $password === $username['password']) {
bu bölümde en sondaki "password" kelimesini niçin yazmıştınız, o kısmı anlayamadım.
Mesaj otomatik birleştirildi:

giris.php sayfasındaki
PHP:
if ($username && $password === $username['password']) {
bu bölümde en sondaki "password" kelimesini niçin yazmıştınız, o kısmı anlayamadım.
Mesaj otomatik birleştirildi:

Arkadaşlar giriş yaptım yalnız çıkış yapamıyorum. "index.php" ye tekrar geldiğimde çıkış yapmadığımı görüyorum.

logout.php nin kodları

PHP:
<?php

session_start();
session_destroy();
header('Location: giris-formu.php');

?>
session ı sadece "header.php" içinde başlattım. yani "baglanti.php" veya "islem.php" içinde değil.
 
Son düzenleme:

mali2012

Üyecik
Giriş yaptım ama halâ çıkış yapamadım. "logout.php" nin kodlarını şöyle yazdım. Yine olmadı.
PHP:
session_start();

if (isset($_SESSION['sessionadi'])) {

session_unset();

session_destroy();

}

header('Location: giris-formu.php');
 

mali2012

Üyecik
Arkadaşlar şu kodlara bir bakın oturum açamadım 2 haftadır uğraşıyorum ve sayısız problemler çıktı. Denemediğim yöntem izlemediğim vidyo kalmadı.

giris.php
PHP:
<?php  session_start();

require_once("baglanti.php");

$k_adi = $_POST["kullanici_adi"];

$sifre = $_POST["sifre"];

$sql = "SELECT * FROM kullanicilar WHERE kullanici_adi=    '$k_adi' AND sifre = '$sifre'";

$result = mysqli_query($conn, $sql);

if(mysqli_num_rows($result)>0) {

while($row = mysqli_fetch_assoc($result)) {

$_SESSION["kullanici"] = $k_adi;

header("Location: index.php");

}

} else {

header("Location: giris-formu.php");

}

?>
header.php
PHP:
<?php if (isset($_SESSION["kullanici"])) { ?>

Gösterilecek alan

<?php  } elseif {  ?>

Session olmadn sitenin görünümü
baglanti.php
PHP:
<?php

$conn = mysqli_connect("localhost", "mali", "w9aGd#51", "bozkiuyk_dernek");

if (!$conn) {

echo "Veritabanına Bağlanamadı";

}

?>
Önceden hy000 hataları veriyordu ama şimdi giriş yap diyorum, index.php ye yönlendiriyor ama giriş yapmıyor.
 

mali2012

Üyecik
Son geldiğim aşamada veritabanındaki kayıtlara ulaşamıyor şu an. "Kullanıcı Bulunamadı" diyor.

giris-formu.php
PHP:
<html>
<head>
     <link rel="stylesheet" href="css/bootstrap.css">
     <link rel="stylesheet" href="fontawesome/css/fontawesome-all.min.css" />
     <link rel="stylesheet" href="css/giris.css" />
     <title>Page Title</title>
</head>
<style>
body {
   background-color: #9dafb7;
}
</style>

     <div class="giris-formu-yazisi">Giriş Formu</div>

         <form action="giris.php" method="post">

                 <label class="kullaniciadi">Kullanıcı Adınız</label>
                 <input class="eposta" type="text" name="kullanici_adi" required="">

                 <label class="sifre">Şifreniz</label>
                 <input class="" type="password" name="sifre" class="" required=""></br>

                 Admin <input type="radio" id="admin" name="gender" value="admin"><br>
                 User <input type="radio" id="user" name="gender" value="user">
                 
                 <input type="submit" class="giris-butonu" method="" name="login" value="Giriş Yap">

                 <div class="giris-formu-anasayfa-butonu"><a data-test="test" rel="nofollow" style="word-wrap: break-word;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?url=index.php" data-href="index.php" >Anasayfa</a></div>

     </body>
     </html>
giris.php
PHP:
<?php

session_start();

$servername="localhost";
$username="kullaniciadi";
$password="123456";
$dbname="veritabaniadi";

$conn = mysqli_connect($servername, $username, $password, $dbname);

if (!$conn) {
   die("Veritabanı Bağlantısı Kurulamadı" .mysqli_connect_error());
}else{
     echo "Bağlantı Kuruldu";
}

$username = $_POST['kullanici_adi'];
$password = $_POST['sifre'];
$role = $_POST['role'];

$login = mysqli_query($baglanti,"select * from kullanicilar where kullanici_adi='$username' and sifre='$password' and role='$role'");

$cek = mysqli_num_rows($login);

if($cek > 0){
 
     $data = mysqli_fetch_assoc($login);
 
     if($data['role']=="admin"){

         $_SESSION['username'] = $username;
         $_SESSION['role'] = "admin";

         header("location:index.php");
 
     }else if($data['role']=="user"){

         $_SESSION['username'] = $username;
         $_SESSION['role'] = "user";

         header("location:index.php");
 
     }else{
 
         header("location:giris-formu.php");
     }    
}else{
         echo "Kullanıcı Bulunamadı";
}
 
?>
header.php
PHP:
<?php

if(!isset($_SESSION["role"])){ ?>

Oturum Açık Değil ise Aşağısı Çalışacak - Yani site normal yüklenecek

<?php

}elseif($_SESSION["role"]=="admin"){

?>

Oturum Admin'e eşit ise Aşağısı Çalışacak

<?php

}elseif($_SESSION["role"]=="user"){

?>

Oturum User'a eşit ise Aşağısı Çalışacak

<?php

}

?>
 

mali2012

Üyecik
Arkadaşlar merhaba. Problemi hallettim. Şu şekilde giriş yapabiliyorum. Emekleriniz için tekrar teşekkür ederim.

baglanti.php
Kod:
<?php

$server = 'localhost';
$dbuser = 'dbkullaniciadi';
$dbpass = 'dbsifresi';
$dbname = 'dbadi';

$conn = mysqli_connect($server, $dbuser, $dbpass, $dbname);

if ($conn->connect_error) {
    echo "Veritabanına Bağlanamadı";
} else {
    echo "";
}

session_start();

?>
giris.php
PHP:
<?php  session_start();

$db = new PDO("mysql:host=localhost; dbname=dbadi; charset=utf8", "dbkullaniciadi", "dbsifresi");

$k_adi = $_POST['kullanici_adi'];
$sifre = $_POST['sifre'];
$role = $_POST['role'];

$admin_adi = "admin";
$admin_sifre = "555";

$kullanici = $db->query("SELECT * FROM kullanicilar WHERE kullanici_adi = '$k_adi' AND sifre = '$sifre' AND role = '$role'")->fetch();

if (($kullanici['kullanici_adi'] == $admin_adi) and ($kullanici['sifre'] == $admin_sifre) and ($kullanici['role'] == "admin")) {

    $_SESSION['admin'] = $kullanici;
    header('Location: index.php');

} elseif (($kullanici['kullanici_adi'] !== $admin_adi) and ($kullanici['sifre'] !== $admin_sifre) and ($kullanici['role'] == "user")) {

    $_SESSION['user'] = $kullanici;
    header('Location: index.php');
    
} else {
    header ('Location: giris-formu.php');
}

?>
header.php
PHP:
<?php  session_start(); ?>

<?php    if (isset($_SESSION['admin'])) { ?>

Oturum admin ise burası çalışacak

<?php    } elseif (isset($_SESSION['user'])) { ?>

oturum user ise burası çalışacak

    <?php } else { ?>
    
    hiçbiri değilse sayfa ilk açıldığı şekliyle yüklenecek
    
     <?php  }   ?>
giris-formu.php
PHP:
php  include 'baglanti.php';  ?>

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="css/bootstrap.css">
    <link rel="stylesheet" href="fontawesome/css/fontawesome-all.min.css" />
    <link rel="stylesheet" href="css/giris.css" />
    <title>Page Title</title>
</head>
<body>

    <div class="giris-arkaplan">

        <!--  <button class="giris-formu-anasayfa-butonu text-center">Anasayfa</button>  -->

        <div class="giris-formu-yazisi">Giriş Formu</div>

        <form action="giris.php" method="POST">

            <div class="form">
                <label class="kullaniciadi">Kullanıcı Adınız</label>
                <input class="eposta" type="text" name="kullanici_adi" required="">

                <label class="sifre">Şifreniz</label>
                <input class="" type="password" name="sifre" class="" required=""><br>
 
                <select id="role" name="role" class="selectbox">
                <option value="admin">Admin</option>
                <option value="user">Kullanıcı</option>
                  </select>
                                
                <input type="submit" class="giris-butonu" method="" name="login" value="Giriş Yap">

                <div class="giris-formu-anasayfa-butonu"><a href="index.php">Anasayfa</a></div>
            </div>

        </form>
                
    </body>
    </html>
 
Üst