PHP PDO ile MySQL'ime veri yazdıramıyorum
Profil uygulaması Websitesi yapıyorum fakat Localhost'umda çalışan kod server'a geçince çalışmıyor. Bir yerden mysql ve hosting aldım bağlantıyı kurdum herşey güzelce çalışıyor fakat iş registere gelince olmuyor. Sürekli stat=no olarak geliyor ve veriyi mysqle yüklemiyor.
Website:
http://linkfyle.unaux.com
http://linkfyle.unaux.com/register.php
Kod:
PHP:
if (isset($_POST['suble'])) {
$username = htmlspecialchars(trim(strtolower($_POST['user_username'])));
$name = htmlspecialchars(trim($_POST['user_name']));
$lastname = htmlspecialchars(trim($_POST['user_lastname']));
$password = htmlspecialchars(md5(trim($_POST['user_password'])));
if (!$username || !$name || !$lastname || !$password) {
header("Location:../register.php?stat=null");
} else {
$tableques=$db->prepare("SELECT * FROM user where user_username=:tableques");
$tableques->execute(array(
'tableques' => $_POST['user_username']
));
$dbc=$tableques->rowCount();
$caps = preg_match('@[A-Z]@', $_POST['user_password']);
$small = preg_match('@[a-z]@', $_POST['user_password']);
$number = preg_match('@[0-9]@', $_POST['user_password']);
$pattern ='/^[-a-zA-Z_\x{ÖÇŞİĞÜöçşğüı}\s]*$/u';
$usernamechars = preg_match('@[^\w]@', $_POST['user_username']);
$namenumber = preg_match('@[0-9]@', $_POST['user_name']);
$namechars = preg_match($pattern, $_POST['user_name']);
$lastnamenumber = preg_match('@[0-9]@', $_POST['user_lastname']);
$lastnamechars = preg_match($pattern, $_POST['user_lastname']);
if ($dbc == 1) {
header("Location:../register.php?stat=username");
}else if($dbc ==0){
if ($usernamechars) {
header("Location:../register.php?username=no");
}else if (!$caps || !$small || !$number || strlen($_POST['user_password']) < 8) {
header("Location:../register.php?password=no");
}else if ($namenumber) {
header("Location:../register.php?name=no");
}else if ($lastnamenumber) {
header("Location:../register.php?lastname=no");
}else if ($namechars || $lastnamechars) {
$saves = $db->prepare("INSERT into user set
user_username = :user_username,
user_name = :user_name,
user_lastname = :user_lastname,
user_password = :user_password
");
$insert = $saves->execute(array(
'user_username' => $username,
'user_name' => $name,
'user_lastname' => $lastname,
'user_password' => $password
));
if ($insert)
{
header("Location:../login.php");
} else {
header("Location:../register.php?stat=no");
}
}
}
}
}
HTML:
<?php include 'src/header.php';
if (@$_SESSION['oturum']) {
header("Location:/");
}
?>
<form action="src/logreg.php" align="center" method="POST">
<label>Kullanıcı Adı</label>
<input type="username" name="user_username" maxlength="15" required>
<br>
<label>Ad</label>
<input type="text" name="user_name" maxlength="15" required>
<br>
<label>Soyad</label>
<input type="text" name="user_lastname" maxlength="10" required>
<br>
<label>Şifre</label>
<input type="password" name="user_password" required>
<br>
<input type="submit" name="suble">
<?php if (@$_GET['stat']=='username') { ?>
<div class="error">
Bu username'den var zaten
</div>
<?php } ?>
<?php if (@$_GET['username']=='koyulmaz') { ?>
<div class="error">
Bu nasıl username
</div>
<?php } ?>
<?php if (@$_GET['password']=='koyulmaz') { ?>
<div class="error">
Şifre en az 8 karakter uzunluğunda olmalı ve en az bir büyük harf ve bir rakam içermelidir.
</div>
<?php } ?>
<?php if (@$_GET['name']=='koyulmaz') { ?>
<div class="error">
İsmin bu mu cidden?
</div>
<?php } ?>
<?php if (@$_GET['lastname']=='koyulmaz') { ?>
<div class="error">
Lütfen sisteme kafanız güzel değilken kaydolun.
</div>
<?php } ?>
</form>
<?php include 'src/footer.php'; ?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
Merhaba;
Senin kodlarınla deneme yaptığımda login.php e yönleniyor yani insert işlemi başarılı. tablo yapını görme şansımız varmı. En basit yolla benim hazırladığım tablo şu şekilde. eğer yanılmıyorsam tabloda bir sorunun var.
CREATE TABLE user
(
id
int(11) NOT NULL,
user_username
varchar(55) NOT NULL,
user_name
varchar(55) NOT NULL,
user_lastname
varchar(55) NOT NULL,
user_password
varchar(55) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Kolay gelsin. Çözüme ulaşamazsan tekrar yazabilirmisin.