php kayıt formu veri tabanına değer sunmuyor ve boş bir sayfa görüntülüyor (hata yok)

Sonunda hiçbir hata olmadan çalışmak için kayıt sayfam var ama şimdi formu gönderdiğimde hiçbir hata yapmadan boş bir sayfa alıyorum. Çıktı bir mesaj olmalı, sonra veri tabanını kontrol ediyorum ve hala boş bir küme. Biri bana nerede yanlış gittiğimi söyleyebilir/nasıl düzeltebilirim?

İşte kod:

<?php
require_once __DIR__.'/config.php';

if($_POST[ 'username' ]!="") {
$username =($_POST["username"]);
$email =($_POST["email"]);
$password =($_POST["password"]);

$sql = "insert into users set username='".$username."', email='".$email."', password='".md5($password)."' ";
$sql =($sql);



$msg = 'Thank you for completing your online registration form!.';
}else{
$msg = "Registration failed";
}  

?>

DÜZENLE: (Yuva Raj cevabına dayanarak)

require_once __DIR__.'/config.php';
session_start();

 $connection = mysqli_connect(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_DATABASE);

    if(isset($_POST['submit'])) 
   {
    $username =$_POST["username"];
    $email =$_POST["email"];
    $password =$_POST["password"];



    $sql = "insert into users set username='".$username."', email='".$email."', password='".$password."' ";
    $result = mysqli_query($connection, $sql);

    if($result)
    {
      echo "successfully inserted";
    }
   else
    {
     echo "failed";
    }
    }

Bazı düzenlemeler yaptım, ancak boş gösteriyor ve veritabanına hiçbir şey girmiyor, daha güvenli hale getirmem gerektiğini anlıyorum, ancak şu an için sadece bir şeyin girmesini istiyorum ki çalıştığını biliyorum.

2
Herhangi bir sorgu yürütmüyorsunuz ama eğer öyleyse, bir sql enjeksiyon probleminiz olur. Hazırlanan bir ifadeye geçmelisiniz. Ne kullanıyorsunuz, PDO veya mysqli? Ve şifreler için md5() kullanmayın: stackoverflow.com/questions/401656/…
katma yazar jeroen, kaynak
Peki sunucuda hata raporlaması açık mı?
katma yazar Naruto, kaynak
Tamam teşekkürler, PDO ile çalışmayı araştırmam gerekecek, bu benim için oldukça yeni, bu yüzden temel bilgilere sahip olduğumdan emin olmak istedim.
katma yazar stark, kaynak

8 cevap

Sonra

$sql = "insert into users set username='".$username."', email='".$email."', password='".md5($password)."' ";

eklemelisin

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

yürütmek için.

Tam kod:

   $connection = mysqli_connect("localhost","username","password","databasename");

    if(isset($_POST['submit']))//checks if form is submitted
   {
    $username =$_POST["username"];
    $email =$_POST["email"];
    $password =$_POST["password"];

    //use mysqli_real_escape_string for $username, $email, $password to escape special characters 

    $sql = "sql query comes here";
    $result = mysqli_query($connection, $sql);

    if($result)
    {
      echo "successfully inserted";
    }
   else
    {
     echo "failed";
    }

  }

EDIT :

Gibi bir sorgu ekle

$query = "INSERT INTO `$table_name` (`username`, `email`,`password`) VALUES ('$username', '$email', '$password')";

Table_name, ihtiyaca göre sütun adlarını değiştirin.

3
katma
Hayır. Config dosyasında bazı bağlantı değişkenleri varsa ve o bağlantıyı orada yaparsanız, burada yapmanız gerekmez. Sadece config dosyasını ekleyin ve mysqli_query 'e ilk paramater olarak bağlantı değişkeninizi belirtin.
katma yazar Yuva Raj, kaynak
Kodlar arasında bir echo sorgusu yapın ve kodun nerede durduğunu görün. EDIT'imi kontrol et.
katma yazar Yuva Raj, kaynak
Duymak güzel :)
katma yazar Yuva Raj, kaynak
PDO aptal kanıtı doğru kullanmak zorunda değilsiniz, bu konuda PHP kılavuzuna bakın, ayrıca PHP kılavuzunda da filter_input ve filter_input_array ile yazınızı nasıl alacağınıza ve verilerinizi nasıl alacağınıza bakın. Doğrulama ve sterilizasyon burada bitmiyor, çok yönlü bir süreç. user -> onayla ve temizle - - veritabanına gönder Ve sonra, veritabanı -> doğrula ve temizle (kullanıldığı yerlerde) -> kullanmaya başla.
katma yazar Chris, kaynak
Bağlantımın bir config dosyası kullanılarak yapıldığı fark eder mi? bu yüzden $ bağlantı ifadesi yok.
katma yazar stark, kaynak
Verdiğiniz cevaba göre düzenleme yaptım, hala boş görünüyor, yanlış yaptığım bir şey var mı, hala çalışmıyor.
katma yazar stark, kaynak
Aslında sadece PDO'yu kullanmayı denedim ve çalışmasını sağladım, bir güncelleme yapacağım.
katma yazar stark, kaynak

Sorununuz, verilen örnekte herhangi bir form veya uygulamanın bulunmaması.

You can use PDO start with this tutorial: http://www.mysqltutorial.org/php-querying-data-from-mysql-table/

Ayrıca, PHP Sınıfları eğitimi, SQL Enjeksiyonunun Önlenmesi, Temel PHP OOP ve PHP Oturumları Eğitimi başlıklarına da bakabilirim. Bunun bir PHP çerçevesiyle daha kolay uygulanabileceğini öğrenebilirsiniz, ancak herhangi bir kod çalışması yapmak istiyorsanız neler olup bittiğini ele almak daha iyidir.

1
katma

Sorununuz, verilen örnekte herhangi bir form veya uygulamanın bulunmaması.

You can use PDO start with this tutorial: http://www.mysqltutorial.org/php-querying-data-from-mysql-table/

Ayrıca, PHP Sınıfları eğitimi, SQL Enjeksiyonunun Önlenmesi, Temel PHP OOP ve PHP Oturumları Eğitimi başlıklarına da bakabilirim. Bunun bir PHP çerçevesiyle daha kolay uygulanabileceğini öğrenebilirsiniz, ancak herhangi bir kod çalışması yapmak istiyorsanız neler olup bittiğini ele almak daha iyidir.

1
katma

Sorununuz, verilen örnekte herhangi bir form veya uygulamanın bulunmaması.

You can use PDO start with this tutorial: http://www.mysqltutorial.org/php-querying-data-from-mysql-table/

Ayrıca, PHP Sınıfları eğitimi, SQL Enjeksiyonunun Önlenmesi, Temel PHP OOP ve PHP Oturumları Eğitimi başlıklarına da bakabilirim. Bunun bir PHP çerçevesiyle daha kolay uygulanabileceğini öğrenebilirsiniz, ancak herhangi bir kod çalışması yapmak istiyorsanız neler olup bittiğini ele almak daha iyidir.

1
katma

Ayrıca, mesajınızı echo yapmanız gerekir.

BTW, yaklaşımınız SQL enjeksiyonuna tamamen açık.

1
katma

Kodumu değiştirmek için Yuva Raj'ın cevabını kullandım, sonra Chris'in öğreticisini kullandım ve çalışma kodunu buldum. Hala daha fazla güvenlik gerektiriyor ancak bir başlangıç ​​gerekiyor.

require_once __DIR__.'/config.php';
session_start();

$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);

$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];

$stmt = $dbh->prepare("insert into users set username='".$username."', email='".$email."', password='".$password."' ");
$stmt->execute();
echo "
You are registered!

";
0
katma

Kodumu değiştirmek için Yuva Raj'ın cevabını kullandım, sonra Chris'in öğreticisini kullandım ve çalışma kodunu buldum. Hala daha fazla güvenlik gerektiriyor ancak bir başlangıç ​​gerekiyor.

require_once __DIR__.'/config.php';
session_start();

$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);

$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];

$stmt = $dbh->prepare("insert into users set username='".$username."', email='".$email."', password='".$password."' ");
$stmt->execute();
echo "
You are registered!

";
0
katma

Kodumu değiştirmek için Yuva Raj'ın cevabını kullandım, sonra Chris'in öğreticisini kullandım ve çalışma kodunu buldum. Hala daha fazla güvenlik gerektiriyor ancak bir başlangıç ​​gerekiyor.

require_once __DIR__.'/config.php';
session_start();

$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);

$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];

$stmt = $dbh->prepare("insert into users set username='".$username."', email='".$email."', password='".$password."' ");
$stmt->execute();
echo "
You are registered!

";
0
katma