Regisztrációs hiba.

Started by DanikaaXY, 2019-09-07, 11:46:15

Hali!
<div class="page-header">
<h1>Înregistrare</h1>
</div>
<?php
if(isset($_SESSION['id'])) {
?>

<div class="alert alert-warning" role="alert">
Ca să-ți creezi un cont nou trebuie să te <a href="index.php?page=logout">deconectezi</a>.
</div>
<?php
} else {

?>

<?php
//Verificare daca inregistrarea e dezactivata.
$rg mysqli_query($sqlHp"SELECT * FROM ".SQL_HP_DB.".settings WHERE id=8");
$reg mysqli_fetch_assoc($rg);
if (
$reg['value'] == 'nu') {
echo 
'<div class="alert alert-danger" role="alert">
Înregistrarea este momentan <strong>dezactivată</strong>!
</div>'
; }

else {
if(!isset(
$_POST['register'])) {
?>

<div class="alert alert-info" role="alert">
<strong>ATENȚIE!</strong> Toate câmpurile sunt obligatorii.<br> <strong>ATENȚIE!</strong>
Adresa de e-mail trebuie să fie validă!
</div>
<div class="alert alert-danger" role="alert">
<strong>ATENȚIE!</strong> Prin înregistrarea pe acest server, ești de
acord cu <a href="index.php?page=rules">regulamentul intern</a>.
</div>
<?php ?>


<?php
if(isset(
$_POST['register']) && !isset($_POST['agreed'])) {
echo '<div class="alert alert-danger" role="alert">
Trebuie să fii de acord cu regulamentul jocului.
</div>'
;
}

if(isset($_POST['register']) && !isset($_POST['captcha'])) {
echo '<div class="alert alert-danger" role="alert">
Trebuie să completezi codul de securitate.
</div>'
;
}

if(isset($_POST['register']) && isset($_POST['captcha'])) {
if($_POST['captcha']!=$_SESSION['captcha']['code'])
echo '<div class="alert alert-danger" role="alert">
Codul de securitate introdus este incorect.
</div>'
;
}

if(isset($_POST['register']) && isset($_POST['agreed']) && isset($_POST['captcha']) && $_POST['captcha']==$_SESSION['captcha']['code']) {

$actions = array(
'username' => sanitize(stripInput($_POST['username'])),
'password' => sanitize(stripInput($_POST['password'])),
'usermail' => sanitize(stripInput($_POST['usermail'])),
'realname' => sanitize(stripInput($_POST['realname'])),
'socialid' => sanitize(stripInput($_POST['socialid'])),
);
$errors = array();

$check_login "SELECT * FROM account.account WHERE login = '{$actions['username']}'";
$check_login $sqlServ->query($check_login);
$rows_login $check_login->num_rows;

$check_email "SELECT * FROM account.account WHERE email = '{$actions['usermail']}'";
$check_email $sqlServ->query($check_email);
$rows_email $check_email->num_rows;
if($rows_login >= 1) {
echo '<div class="alert alert-danger" role="alert">';
echo ' Acest cont este deja înregistrat!';
echo '</div>';
} else if($rows_email >= 1) {
echo '<div class="alert alert-danger" role="alert">';
echo ' Acest e-mail este folosit deja de un alt cont!';
echo '</div>';
} else {
if(filter_var($actions['usermail'], FILTER_VALIDATE_EMAIL)) {
if($_POST['password'] == $_POST['rpassword']) {
$query "INSERT INTO account.account (login, password, real_name, social_id, email, create_time)
VALUES (?, PASSWORD(?), ?, ?, ?, NOW())"
;
$sanitize = array(
':user' => $actions['username'],
':pass' => $actions['password'],
':mail' => $actions['usermail'],
':name' => $actions['realname'],
':soid' => $actions['socialid'],
);
$insert $sqlServ->prepare($query);
$insert->bind_param('sssss'$sanitize[':user'], $sanitize[':pass'], $sanitize[':name'], $sanitize[':soid'], $sanitize[':mail']);
$insert->execute();
echo '<div class="alert alert-success" role="alert">';
echo ' Contul <strong>' $actions['username'] . '</strong> a fost înregistrat cu succes!';
echo '</div>';
} else {
echo '<div class="alert alert-danger" role="alert">';
echo ' Parolele nu corespund!';
echo '</div>';
}
} else {
echo '<div class="alert alert-success" role="alert">';
echo ' Adresa de e-mail este invalidă!';
echo '</div>';
}
}
}

require 'captcha/simple-php-captcha.php';
$_SESSION['captcha'] = simple_php_captcha();
?>

<div class="well">
<div class="table-responsive">
<form action="<?= $_SERVER['PHP_SELF'] ?>?page=register" method="post">
<table class="table table-striped">
<tbody>
<tr>
<td>Nume de utilizator:</td>
<td><input type="text" class="form-control" name="username" pattern=".{5,16}" maxlength="16" placeholder="Numele dorit..." required title="Între 5 și 16 caractere permise."></td>
</tr>
<tr>
<td>Parolă:</td>
<td><input type="password" class="form-control" name="password" pattern=".{5,16}" maxlength="16" placeholder="Parolă" required title="Între 5 și 16 caractere permise."></td>
</tr>
<tr>
<td>Repetă parola:</td>
<td><input type="password" class="form-control" name="rpassword" pattern=".{5,16}" maxlength="16" placeholder="Repetare parolă" required title="Între 5 și 16 caractere permise."></td>
</tr>
<tr>
<td>Adresă de e-mail:</td>
<td><input type="email" class="form-control" name="usermail" pattern=".{7,64}" maxlength="64" placeholder="[email protected]" required title="Maxim 64 caractere."></td>
</tr>
<tr>
<td>Cod ștergere caracter:</td>
<td><input type="text" AUTOCOMPLETE="off" maxlength="7" class="form-control" name="socialid" placeholder="Ștergere caracter în joc" required></td>
</tr>
<tr>
<td>Nume real:</td>
<td><input type="text" class="form-control" name="realname" pattern=".{3,15}" maxlength="15" placeholder="Numele tău" required title="Maxim 15 caractere."></td>
</tr>
<tr>
<td><?php print '<img src='.$_SESSION['captcha']['image_src'].'>'?></td>
<td><input type="text" style='height:70px; width:230px; font-size: 30px;' class="form-control" name="captcha" pattern=".{4,6}" maxlength="5" placeholder="Cod securitate" required title="Maxim 15 caractere."></td>
</tr>
<tr>
<td>Sunt de acord cu <a href="index.php?page=rules">regulamentul
jocului</a> <input type="checkbox" name="agreed" checked></td>
</td>
<td><input type="submit" class="btn btn-s btn-success" name="register" value="Înregistrare"></td>
</tr>
</tbody>
</table>
</form>
</div>
</div>
<?php }} ?>

Most ezzel mi a gond? Az istenért nem jövök rá, miért nem generálja le az account.account táblába a felhasználót.
Kiírja, hogy sikerült stb, viszont nem jelenik meg.
Ez az eredeti módosítatlan register.php

Szia. Csatold az account design table szerkezetét is.
A különbség a sikertelen és a sikeres ember között nem feltétlenül a tehetség, hanem a kitartás.
https://youtu.be/jGQJqcyHjY0

id int 11 0 0 -1 0 0 0 0 0 0
login varchar 30 0 0 0 0 0 0 0 ascii ascii_general_ci 0 0
password varchar 45 0 0 0 0 0 0 0 ascii ascii_general_ci 0 0
real_name varchar 16 0 -1 0 0 0 0 0 ascii ascii_general_ci 0 0
social_id varchar 13 0 0 0 0 0 0 0 ascii ascii_general_ci 0 0
email varchar 64 0 0 0 0 0 0 0 ascii ascii_general_ci 0 0
phone1 varchar 16 0 -1 0 0 0 0 0 ascii ascii_general_ci 0 0
phone2 varchar 16 0 -1 0 0 0 0 0 ascii ascii_general_ci 0 0
address varchar 128 0 -1 0 0 0 0 0 ascii ascii_general_ci 0 0
zipcode varchar 7 0 -1 0 0 0 0 0 ascii ascii_general_ci 0 0
create_time datetime 0 0 0 0 0 0 0 '0000-00-00 00:00:00' 0 0 0
question1 varchar 48 0 -1 0 0 0 0 0 ascii ascii_general_ci 0 0
answer1 varchar 48 0 -1 0 0 0 0 0 ascii ascii_general_ci 0 0
question2 varchar 48 0 -1 0 0 0 0 0 ascii ascii_general_ci 0 0
answer2 varchar 48 0 -1 0 0 0 0 0 ascii ascii_general_ci 0 0
is_testor tinyint 1 0 0 0 0 0 0 0 0 0 0
status varchar 8 0 0 0 0 0 0 'OK' 0 ascii ascii_general_ci 0 0
securitycode varchar 192 0 -1 0 0 0 0 0 ascii ascii_general_ci 0 0
newsletter tinyint 1 0 -1 0 0 0 0 0 0 0 0
empire tinyint 4 0 0 0 0 0 0 0 0 0 0
name_checked tinyint 1 0 0 0 0 0 0 0 0 0 0
availDt datetime 0 0 0 0 0 0 0 '0000-00-00 00:00:00' 0 0 0
mileage int 11 0 0 0 0 0 0 0 0 0 0
cash int 11 0 0 0 0 0 0 0 0 0 0
gold_expire datetime 0 0 0 0 0 0 0 '0000-00-00 00:00:00' 0 0 0
silver_expire datetime 0 0 0 0 0 0 0 '0000-00-00 00:00:00' 0 0 0
safebox_expire datetime 0 0 0 0 0 0 0 '2020-01-01 00:00:00' 0 0 0
autoloot_expire datetime 0 0 0 0 0 0 0 '2020-01-01 00:00:00' 0 0 0
fish_mind_expire datetime 0 0 0 0 0 0 0 '0000-00-00 00:00:00' 0 0 0
marriage_fast_expire datetime 0 0 0 0 0 0 0 '0000-00-00 00:00:00' 0 0 0
money_drop_rate_expire datetime 0 0 0 0 0 0 0 '0000-00-00 00:00:00' 0 0 0
ttl_cash int 11 0 0 0 0 0 0 0 0 0 0
ttl_mileage int 11 0 0 0 0 0 0 0 0 0 0
channel_company varchar 30 0 0 0 0 0 0 0 ascii ascii_general_ci 0 0
last_play datetime 0 0 0 0 0 0 0 0 0 0
coins int 11 0 0 0 0 0 0 0 0 0 0
web_admin int 1 0 0 0 0 0 0 0 0 0 0
web_ip varchar 15 0 0 0 0 0 0 0 ascii ascii_general_ci 0 0
web_aktiviert varchar 32 0 0 0 0 0 0 0 ascii ascii_general_ci 0 0
invite int 10 0 0 0 0 0 0 0 0 0 0
invitecount int 10 0 0 0 0 0 0 0 0 0 0
invstate int 10 0 0 0 0 0 0 0 0 0 0
reason varchar 256 0 -1 0 0 0 0 0 ascii ascii_general_ci 0 0
passlost_token varchar 32 0 0 0 0 0 0 0 ascii ascii_general_ci 0 0
passchange_token varchar 32 0 0 0 0 0 0 0 ascii ascii_general_ci 0 0
new_email_change varchar 64 0 0 0 0 0 0 0 ascii ascii_general_ci 0 0
new_email_change2 varchar 32 0 0 0 0 0 0 0 ascii ascii_general_ci 0 0

Első körben nem tudom valami másik fáljban(itt a kimásolt szekcióban nincsen az fix) csatolva van-e a $sqlServ változó ami valszeg a mysql connectionért lenne felelős de itt konkrétan nincsen deklarálva szóval helyből halott az egész, nincsen kapcsolat az DB-del.

Másfelől a prepared statmented elég furán van megirva, amig a $query-ben 6 parapmáter szerepel addig az $insert-ben már csak 5. Ez eléggé letudja gyilkolni hiszen van 1 paraméter amit nem tud hova tenni. Igaz tekintve, hogy a create_time paramétered valszeg CURRENT_TIMESTAMP akár el is hagyhatnád a paraméter lsitádból, az adatbázis magától odabiggyeszti a rekord létrehozásakor az aktuális dátumot, amúgy sincsen más idő meghatározva a kódban ha jól láttam.

Most nem fogom a tábla szerkezeted bogarászni de a prepared statmentben meg kéne nézned a 'sssss' részt, hogy valóban minden paraméter string-e.
Van valami captha-ról is ködös emlités de mivel $_SESSION tömbbe van gondolom az is másik fáljban foglal helyet szóval azt se tudom nagyon átlátni mükszik-e.
Amúgy a táblád és/vagy DB-d adatszerkezetét nem szerencsés igy ország-világ elé tárni mivel igy egy hozzáértő a (ha tudja plusszba a webszerver cimét ahol ez tárolva van, ami nem nagy titok átlalában)kb 0 idő/erőbefektetéssel azt tud csinálni a DB-del amit jóformán akar.