Posiadam pewien problem z którym się jeszcze nie spotkałem. Otóż niedawno zakupiłem serwer i domenę. Wszystko działało do pewnego momentu. Obecnie skrypt rejestracji (taki jak na filmie u Zelenta), nawet nie uzupełniony i wysłany przenosi użytkownika na główną stronę domeny. Gdy wypełnimy formularz i dane są poprawne to doda użytkownika do bazy, lecz nie przekieruje użytkownika na stronę podaną w header() tylko od razu na główną stronę domeny. Używam .htaccess, lecz nie wiem czy może to być przyczyną problemu.
Męczę się z tym dwa dni i nie mam już pomysłu. Skrypt jest poprawny, więc czy to może być wina serwera i hostingu na Linuxpl.com?
Zamieszczam kod rejestracji:
<?php
session_start();
if((isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true))
{
header('Location: https://e-rafcik.pl');
exit();
}
if (isset($_POST['email']))
{
$wszystko_OK=true;
$nick = $_POST['nick'];
if ((strlen($nick)<3) || (strlen($nick)>20))
{
$wszystko_OK=false;
$_SESSION['e_nick']="Nick musi posiadać od 3 do 20 znaków!";
}
if (ctype_alnum($nick)==false)
{
$wszystko_OK=false;
$_SESSION['e_nick']="Nick może składać się tylko z liter i cyfr (bez polskich znaków)";
}
$email = $_POST['email'];
$emailB = filter_var($email, FILTER_SANITIZE_EMAIL);
if ((filter_var($emailB, FILTER_VALIDATE_EMAIL)==false) || ($emailB!=$email))
{
$wszystko_OK=false;
$_SESSION['e_email']="Podaj poprawny adres e-mail!";
}
$haslo1 = $_POST['haslo1'];
$haslo2 = $_POST['haslo2'];
if ((strlen($haslo1)<8) || (strlen($haslo1)>20))
{
$wszystko_OK=false;
$_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
}
if ($haslo1!=$haslo2)
{
$wszystko_OK=false;
$_SESSION['e_haslo']="Podane hasła nie są identyczne!";
}
$haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT);
if (!isset($_POST['regulamin']))
{
$wszystko_OK=false;
$_SESSION['e_regulamin']="Potwierdź akceptację regulaminu!";
}
$sekret = "6Ld3S8AUAAAAAHyz6vg24FGtwkO1ZdcibyfzFyvO";
$sprawdz = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$sekret.'&response='.$_POST['g-recaptcha-response']);
$odpowiedz = json_decode($sprawdz);
if ($odpowiedz->success==false)
{
$wszystko_OK=false;
$_SESSION['e_bot']="Potwierdź, że nie jesteś botem!";
}
$_SESSION['fr_nick'] = $nick;
$_SESSION['fr_email'] = $email;
$_SESSION['fr_haslo1'] = $haslo1;
$_SESSION['fr_haslo2'] = $haslo2;
if (isset($_POST['regulamin'])) $_SESSION['fr_regulamin'] = true;
require_once "../connect.php";
mysqli_report(MYSQLI_REPORT_STRICT);
try
{
$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
$polaczenie->set_charset('utf8');
if ($polaczenie->connect_errno!=0)
{
throw new Exception(mysqli_connect_errno());
}
else
{
$rezultat = $polaczenie->query("SELECT id FROM uzytkownik WHERE email='$email'");
if (!$rezultat) throw new Exception($polaczenie->error);
$ile_takich_maili = $rezultat->num_rows;
if($ile_takich_maili>0)
{
$wszystko_OK=false;
$_SESSION['e_email']="Istnieje już konto przypisane do tego adresu e-mail!";
}
$rezultat = $polaczenie->query("SELECT id FROM uzytkownik WHERE login='$nick'");
if (!$rezultat) throw new Exception($polaczenie->error);
$ile_takich_nickow = $rezultat->num_rows;
if($ile_takich_nickow>0)
{
$wszystko_OK=false;
$_SESSION['e_nick']="Istnieje już gracz o takim nicku! Wybierz inny.";
}
if ($wszystko_OK==true)
{
$data= date("Y-m-d");
if ($polaczenie->query("INSERT INTO uzytkownik VALUES (NULL, '$nick', '$haslo_hash', '$email', '$data', 0, '1.png',0,0,'0')"))
{
$_SESSION['udanarejestracja']=true;
$odbior=$polaczenie->query("SELECT id FROM uzytkownik WHERE email='$email'");
$row=mysqli_fetch_row($odbior);
$n=20;
function getName($n) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $n; $i++) {
$index = rand(0, strlen($characters) - 1);
$randomString .= $characters[$index];
}
return $randomString;
}
$kodaktywacyjny= $row['0']."ż".getName($n);
$koddeaktywacja=$kodaktywacyjny."14de15le192te";
$polaczenie->query("UPDATE uzytkownik SET kodaktywacyjny='$kodaktywacyjny' WHERE email='$email' AND id='$row[0]' ");
include_once "../smtpmail/smtpmail1.php";
$temat="Aktywacja konta w serwisie www.e-Rafcik.pl!";
$wiadomosc="<div style=\"color: black;\">Dziękujemy za dokonanie rejestracji w serwisie www.e-Rafcik.pl! Cieszymy się, że chciałeś/aś dołączyć do naszej społeczności. <br/> Poniżej załączamy link aktywacyjny do Twojego konta. <br/> <a href=\"https://e-rafcik.pl/konta/aktywuj.php?kod=$kodaktywacyjny\">TEN LINK</a><br/>
Jeśli to nie Ty rejestrowałeś/aś się w tym serwisie kliknij w poniższy link i usuń to konto:<a href=\"https://e-rafcik.pl/konta/delete.php?kod=$koddeaktywacja\">TEN LINK</a> </div>";
wyslijMailText("$email","$temat","$wiadomosc");
header('Location: aktywuj.php?id='.$row[0].'&a=1');
}
else
{
throw new Exception($polaczenie->error);
}
}
$polaczenie->close();
}
}
catch(Exception $e)
{
echo '<span style="color:red;">Błąd serwera! Przepraszamy za niedogodności i prosimy o rejestrację w innym terminie!</span>';
echo '<br />Informacja developerska: '.$e;
}
}
?>
a tu htaccess
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://e-rafcik.pl%{REQUEST_URI} [L,NE,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]