lostyazilim
tr.link

Php Mysql verilerini pdo çevirme hatası

12 Mesajlar 4.729 Okunma
acebozum
tr.link

mesut33 mesut33 WM Aracı Kullanıcı
  • Üyelik 15.11.2016
  • Yaş/Cinsiyet 32 / E
  • Meslek Yönetici
  • Konum Mersin
  • Ad Soyad M** U**
  • Mesajlar 153
  • Beğeniler 44 / 11
  • Ticaret 0, (%0)
Arkadaşlar şu iki php dosyasını pdoya çevirmek istedim ama sabahtan beridir uğraşıyorum bir türlü yapamadımm Allah rızası için biri şunu pdoya çevire bilir mi?

Vallahi ekrana bakmaktan oraya buraya bakmaktan bıktım, biri şu iki dosyayı pdoya çevirsin artık isyan etmeye başladım





//$host ='localhost';
//$database ='pro';
//$user ='root';
//$pass ='123456';

//mysql_connect($host,$user,$pass);
//mysql_select_db($database);
?>




include("connect.php");
$username = mysql_escape_string($_GET['username']);
$password = mysql_escape_string($_GET['password']);

$squery = mysql_query("SELECT * FROM users WHERE username='$username'");
$query = mysql_fetch_array($squery);
$rowcount = mysql_num_rows($squery);

if($rowcount == 1)
{
if($password != $query['password'])
echo 'password ';
else 'login ';
}
else
echo 'Kayıt '



?>
 

 

elektronikssl
webimgo

ikodev ikodev Developer Kullanıcı
  • Üyelik 08.05.2015
  • Yaş/Cinsiyet 28 / E
  • Meslek Developer
  • Konum Samsun
  • Ad Soyad İ** Ş**
  • Mesajlar 1020
  • Beğeniler 321 / 321
  • Ticaret 19, (%100)
1-Connect.php
header('Content-Type: text/html; charset=utf-8');

$k_id = "root"; // veritabanı kullanıcı adı - database username
$k_pass = "123456"; // veritabanı kullanıcı şifresi - database password
$k_host = "localhost"; // sunucu - host
$k_db = "pro"; // veritabanı adı - database name

try {
$db = new PDO("mysql:host={$k_host};dbname={$k_db};charset=utf8", $k_id, $k_pass);
// veritabanından veri çekerken türkçe sorunlarını düzeltmek için utf-8e dönüştürüyoruz
$db->exec("SET NAMES 'utf8';");
$db->exec("SET CHARSET 'utf8;'");
} catch ( PDOException $e ){
// die($e->getMessage()); // bağlantı sağlanamıyorsa bu satırı aktif ederek sorunu öğreniyoruz
die("DATABASE NOT FOUND!"); // veya hata çıktımızı veriyoruz
}
?>

2-Diğer dosyan
include("connect.php");
$username = mysql_escape_string($_GET['username']);
$password = mysql_escape_string($_GET['password']);

$kullaniciKontrol = $db->query("SELECT * FROM users WHERE username = '{$username}' AND password = '{$password}'")->fetch(PDO::FETCH_ASSOC);

if($kullaniciKontrol)
{
echo 'Giriş yapıldı.';
}
else
echo 'Kullanıcı adı veya şifre yanlış.'; // Genel bilgilendirme yaptık
?>


PDO Veritabanı Sınıfı Bakmanı öneririm ;)

Kolay gelsin :angel: (Eğer ki mysql bilgilerinin doğru olduğunu düşünp yinede bağlanmıyorsa ; AppServ gibi sanal sunucuda çalışıyorsan eğer, php 7x sürümünü aktif etmeyi ve pdo_mysql uzantısını aktif etmeyi unutma internetten araştırabilirsin)
 

 

mesut33 mesut33 WM Aracı Kullanıcı
  • Üyelik 15.11.2016
  • Yaş/Cinsiyet 32 / E
  • Meslek Yönetici
  • Konum Mersin
  • Ad Soyad M** U**
  • Mesajlar 153
  • Beğeniler 44 / 11
  • Ticaret 0, (%0)
ilginiz için teşekkür ederim ama şöyle bir hata alıyorum

xampp kullanıyorum ve hata
Fatal error: Uncaught Error: Call to undefined function mysql_escape_string() in C:\xampp\htdocs\login\login.php:3 Stack trace: #0 {main} thrown in C:\xampp\htdocs\login\login.php on line 3

akıl vermek gibi olmasın ama sanırı şunlar pdo tarzında yazılması gerekiyor.

$username = mysql_escape_string($_GET['username']);
$password = mysql_escape_string($_GET['password']);
 

 

Decimas Decimas WM Aracı Kullanıcı
  • Üyelik 19.04.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** E**
  • Mesajlar 820
  • Beğeniler 1 / 302
  • Ticaret 1, (%100)
connection.php


class Connection{
// database configuration
public $db = 'YourDb';
public $host = 'localhost';
public $user = 'root';
public $pass = 'YourDbUserPassword';

// MySQL Connection Function
public function MySQLConnection(){
try {
$pdo = new PDO("mysql:host={$this->host}; dbname={$this->db}; charset=utf8", "{$this->user}", "{$this->pass}");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
return $pdo;
} catch (PDOException $exp) {
print_r($exp);
}
}
}


common.php


class Common{
/*--------------------- $_GET & $_POST ----------------- START */

// Secure via $_GET
public function get($parameter){
return !isset($_GET[$parameter]) ? false : strip_tags(trim(addslashes(htmlspecialchars($_GET[$parameter]))));
}

// Secure via $_POST
public function post($parameter){
if (!empty($_POST[$parameter])) {
if (is_array($_POST[$parameter])) {
$request = array();
foreach ($_POST[$parameter] as $param)
$request[] = htmlspecialchars(addslashes(trim($param)));
return $request;
}
return htmlspecialchars(addslashes(trim($_POST[$parameter])));
}
return false;
}

/*--------------------- $_GET & $_POST ----------------- END */
}


çalıştığın.php


// connection class
require_once("connection.php");
$conn = new Connection();
$db = $conn->MySQLConnection();

// common features
require_once("common.php");
$common = new Common();

$username = $common->post('username');
$password = $common->post('password');

// basic pdo selection prepare proc
$query = $db->prepare("SELECT * FROM users WHERE username=:uname AND password=:upass");
//execution
$query->execute(array(
"uname" => $username,
"upass" => $password
));

// get result
$result = $query->fetch(\PDO::FETCH_ASSOC);

if ($result) {
var_dump($result);
} else {
echo "There is no result.";
}


Güzel örnekler seçtim senin için ama pdo tek başına yetersiz, veritabanı işlemleri için daha gelişmiş sınıflar kullanmalısın, örneğin Illuminate. Sadece örnek kopyala yapıştır değil, anlayarak kendin tekrar yazmalısın, mysql fonksiyonları PHP'nin güncel sürümlerinden kaldırıldı. Muhtemleen sende o kısımda sürekli sorun yaşadın.
mesut33

kişi bu mesajı beğendi.

no time for caution
wmaraci
wmaraci

mesut33 mesut33 WM Aracı Kullanıcı
  • Üyelik 15.11.2016
  • Yaş/Cinsiyet 32 / E
  • Meslek Yönetici
  • Konum Mersin
  • Ad Soyad M** U**
  • Mesajlar 153
  • Beğeniler 44 / 11
  • Ticaret 0, (%0)
hocam yine hata aldım :s

Fatal error: Uncaught Error: Using $this when not in object context in C:\xampp\htdocs\login.php:15 Stack trace: #0 {main} thrown in C:\xampp\htdocs\login.php on line 15
 

 

ikodev ikodev Developer Kullanıcı
  • Üyelik 08.05.2015
  • Yaş/Cinsiyet 28 / E
  • Meslek Developer
  • Konum Samsun
  • Ad Soyad İ** Ş**
  • Mesajlar 1020
  • Beğeniler 321 / 321
  • Ticaret 19, (%100)

mesut33 adlı üyeden alıntı

ilginiz için teşekkür ederim ama şöyle bir hata alıyorum

xampp kullanıyorum ve hata
Fatal error: Uncaught Error: Call to undefined function mysql_escape_string() in C:\xampp\htdocs\login\login.php:3 Stack trace: #0 {main} thrown in C:\xampp\htdocs\login\login.php on line 3

akıl vermek gibi olmasın ama sanırı şunlar pdo tarzında yazılması gerekiyor.

$username = mysql_escape_string($_GET['username']);
$password = mysql_escape_string($_GET['password']);


$username = $_GET['username'];
$password = $_GET['password'];

Şimdilik bu şekilde değiştir. Eğer çalışıyorsa filtreleme için özel fonksiyon önericem (Cevaplarken etiket atmayı unutma bildirim gelmediği için göremiyorum) :)
mesut33

kişi bu mesajı beğendi.

mesut33 mesut33 WM Aracı Kullanıcı
  • Üyelik 15.11.2016
  • Yaş/Cinsiyet 32 / E
  • Meslek Yönetici
  • Konum Mersin
  • Ad Soyad M** U**
  • Mesajlar 153
  • Beğeniler 44 / 11
  • Ticaret 0, (%0)
@edcsmile
xampp kullanıyordum sorun onda dimi sonra Wampserver32 kurdum ama sonuç
yine aynı


 

 

ikodev ikodev Developer Kullanıcı
  • Üyelik 08.05.2015
  • Yaş/Cinsiyet 28 / E
  • Meslek Developer
  • Konum Samsun
  • Ad Soyad İ** Ş**
  • Mesajlar 1020
  • Beğeniler 321 / 321
  • Ticaret 19, (%100)
İkisinide hiç önermem :)

1-Kesinlikle AppServ kullan.
2-Kullanıcı adı ve şifreyi doğru girdiğin halde yanlış sonucunu mu veriyor? Veritabanı bağlantısını sağlayamadığını düşünüyorum
mesut33

kişi bu mesajı beğendi.

mesut33 mesut33 WM Aracı Kullanıcı
  • Üyelik 15.11.2016
  • Yaş/Cinsiyet 32 / E
  • Meslek Yönetici
  • Konum Mersin
  • Ad Soyad M** U**
  • Mesajlar 153
  • Beğeniler 44 / 11
  • Ticaret 0, (%0)
çok teşekkür ederim, hatayı 1 dakikada çözdünüz çok sağolun.
ikodev

kişi bu mesajı beğendi.

Decimas Decimas WM Aracı Kullanıcı
  • Üyelik 19.04.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** E**
  • Mesajlar 820
  • Beğeniler 1 / 302
  • Ticaret 1, (%100)

mesut33 adlı üyeden alıntı

hocam yine hata aldım :s

Fatal error: Uncaught Error: Using $this when not in object context in C:\xampp\htdocs\login.php:15 Stack trace: #0 {main} thrown in C:\xampp\htdocs\login.php on line 15


$this->dbapp yerine $db olacakmış, gözden kaçmış :D
mesut33

kişi bu mesajı beğendi.

no time for caution
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al