• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Rejestracja PHP PDO [ankieta]

Object Storage Arubacloud
0 głosów
863 wizyt
pytanie zadane 6 sierpnia 2016 w PHP przez Mistrz0000000 Bywalec (2,780 p.)

Witam mam pewien problem. Mam taki kod:

index.php - tu jest mózg strony

<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);

require_once('functions/login.php');
require_once('functions/register.php');

$page = $_GET['page'];
$act = $_GET['action'];

$login = $_GET['login'];
$password = $_GET['password'];
$password2 = $_GET['password2'];
$steamid = $_GET['steamid'];

switch($page) {

    case'1':
        include('start.php');
        break;
    case'2':
        include('oferta.php');
        break;
    case'3':
        include('pomoc.php');
        break;
    case'4':
        include('zaloguj.php');
        break;
    default:
        include('start.php');
        break;
}

switch($act)
{
    case'reg':
            if(login_exist($login))
            {
                echo 'Taki użytkownik juz istnieje';
            }else{
                register($_POST['login'], $_POST['password'], $_POST['steamid']);
                include('start.php');
                echo 'pomyślnie zarejestrowano';
            }
}
?>

narazie tylko rejestracje robię więc spokojnie.

plik zaloguj.php - tu jest strona z inputami i td.

<!Doctype html>
<html lang="pl">
<head>
	<meta charset="utf-8"/>
	<title>Polygon Lombard</title>
	<meta name="description" content="Na naszej stronie znajdziesz najtańsze coinsy na stronę CSGOpolygon w internecie."/>
	<meta name="keywords" content="csgodouble coins, csgodouble, CSGOcoins, csgocoinspl, coinsy do csgodouble, coinsy za sms, coinsy za psc, tane coinsy do csgodouble, csgopolygon coins, csgopolygon, CSGOcoins, csgocoinspl, coinsy do csgopolygon, tane coinsy do csgopolygon, csgo, counter strike, counter strike global offensive"/>
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
	<meta name="author" content="Kamil Haniewicz">
	<link rel="stylesheet" href="css/logowanie.css" type="text/css"/>
	<link rel="stylesheet" href="css/fontello.css" type="text/css">
	<link href='https://fonts.googleapis.com/css?family=Slabo+27px&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
	<link href='https://fonts.googleapis.com/css?family=Lato:700&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
	
</head>
<body>
<?php include_once("analyticstracking.php") ?>
<div class="container">


	<div class="logo">
		<img src="target.png" alt="Logo" style="float: left; padding-right: 5px; padding-bottom: 5px; padding-top: 5px;"/><div style="padding-bottom: 5px; padding-top: 5px;"><span style="color: #c34f4f">Polygon</span>Lombard</div>
	</div>
	
	
	<div class="nav">
	<ol>
	<li><a href="index.php?page=1">Strona Główna</a></li>
	<li><a href="index.php?page=2">Oferta</a></li>
	<li><a href="index.php?page=3">Pomoc</a></li>
	</ol>
	</div>
	
	
	<div class="content">
	<div style="margin-top: 10px;"></div>
	
	<h1>Zaloguj się!</h1>
	<form action="" method="POST">
	<input type="text" name="login" placeholder="Nazwa użytkownika">
	<input type="password" name="pass" placeholder="Hasło">
	<button type="submit" name="log" >Zaloguj</button>
	</form>
	
		<div style="margin-top: 30px;"></div>
		<div class="styleline"></div>
		<div style="margin-top: 40px;"></div>
		<div class="line"></div>
		<div style="margin-top: 40px;"></div>
		<div class="styleline"></div>
		<div style="margin-bottom: 20px;"></div>

	<form action="" method="POST">
	<h1>Zarejestruj się! </h1>
	<input type="text" name="login" placeholder="Nazwa użytkownika">
	<input type="password" name="password" placeholder="Hasło">
	<input type="password" name="password2" placeholder="Hasło2">
	<input type="text" name="steamid" placeholder="SteamID64 lub link do profilu steam">
	<button type="submit" name="register">Zarejestruj</button>
	</form>
	
	<div style="margin-bottom: 100px;"></div>
	<div style="clear: both;"></div>
</div>
			<div class="footer">
			<div class="fb"><a href="https://www.facebook.com/" ><img src="graph/facebook.png" alt="Facebook"/></a></div>
			<div class="yt"><a href="https://www.youtube.pl/"><img src="graph/youtube.png" alt="Youtube"/></a></div>
			<div  style="float: left;">
			<div class="text3">
	<p>Polygon Lombard &copy;Wszelkie prawa zastrzeżone</p>
	</div>
	</div>
	</div>
</div>
</body>
</html>

register.php - tu są funkcje dot. rejestracji

<?php
function getDBH(){
    $mysql_hostname = 'mysql.hostinger.pl';
    $mysql_username = 'xxxxxxxx';
    $mysql_password = 'xxxxxxx';
    $mysql_dbname =   'xxxxxxx';
    $dbh = new PDO("mysql:host=$mysql_hostname; dbname=$mysql_dbname", $mysql_username, $mysql_password);
    $dbh->query('SET NAMES utf8');
    $dbh->query('SET CHARACTER_SET utf8_unicode_ci');
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $dbh;}

function register($login, $password, $steamid)
{
    $phpro_login = filter_var($login, FILTER_SANITIZE_STRING);
    $phpro_password = filter_var($password, FILTER_SANITIZE_STRING);
    $phpro_steamid = filter_var($steamid, FILTER_SANITIZE_STRING);
    $phpro_password = sha1($phpro_password);
    $stmt = getDBH()->prepare("INSERT INTO users (login,password,steamid) VALUES (:login,:password,:steamid)");
    $stmt->bindParam(':login', $phpro_login, PDO::PARAM_STR);
    $stmt->bindParam(':password', $phpro_password, PDO::PARAM_STR);
    $stmt->bindParam(':steamid', $phpro_steamid, PDO::PARAM_STR);
    $stmt->execute();
}

function login_exist($login)
{
    $phpro_login = filter_var($login, FILTER_SANITIZE_STRING);
    $stmt = getDBH()->prepare("SELECT * FROM users WHERE login=:login");
    $stmt->bindParam(':login', $phpro_login, PDO::PARAM_STR);
    $stmt->execute();

    if ($stmt->RowCount() == 1) {
        return true;
    } else {
        return false;
    }
}
?>
I problem jest taki że strona jedynie się odświeża i czyści inputy rejestracji i nic nie zapisuje w mysql.
Możliwe odpowiedzi:
Błąd jest w pliku index.php (1 głos, 50%)
Błąd jest w pliku zaloguj.php (0 głosów)
Błąd jest w pliku register.php (1 głos, 50%)
komentarz 6 sierpnia 2016 przez jpacanowski VIP (101,940 p.)
Co to, ankieta? Nagrody jakieś są?
komentarz 6 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
niestety ni ;)
komentarz 6 sierpnia 2016 przez xandros Nałogowiec (29,450 p.)
Nie pisz takich skrótowców zmiennych, jak napisałeś 'akt'. Nazwa zmiennej powinna być jednoznaczna: http://math.uni.lodz.pl/~mmisiak/zpi/studenci/czystykod.pdf

Dodatek: http://sjp.pwn.pl/sjp/na-razie;2486935.html
komentarz 6 sierpnia 2016 przez xandros Nałogowiec (29,450 p.)
komentarz 6 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
Osobiście uważam sha za bespieczniejsze rozwiązanie
1
komentarz 6 sierpnia 2016 przez efiku Szeryf (75,160 p.)

My jesteśmy tylko programistami z doświadczeniem, musisz nam wybaczyć wink

2
komentarz 6 sierpnia 2016 przez xandros Nałogowiec (29,450 p.)
beSpieczniejsze może i jest, ale napewno nie najbeZpieczniejsze.

Łap: https://drive.google.com/open?id=0B_m8fC4d_bzNalREc3NvSXV4eWs
komentarz 6 sierpnia 2016 przez efiku Szeryf (75,160 p.)

3 odpowiedzi

+1 głos
odpowiedź 6 sierpnia 2016 przez xandros Nałogowiec (29,450 p.)
Dodaj do formularza: action="?action=reg" lub action="index.php?action=reg"
komentarz 6 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
nie działa
+1 głos
odpowiedź 6 sierpnia 2016 przez efiku Szeryf (75,160 p.)

Fajnie, jest PDO, ale źle go podpinasz..

1. Jak chcesz utf8 to dodaj ;charset=utf8 do 1 argumentu konstruktora PDO, informacja jest na wiki

2. Ustawiasz mu MODE na Exception, co oznacza, że gdy rzuci wyjątkiem, twoje dane do bazy będą na tacy. ( bloczki try..catch)

3. $phpro_password = powiedz, dlaczego chcesz filtrować czyjeś hasło?  Nie sha1 tylko funkcje password_hash i password_verify które domyślnie hashują bcryptem ich używaj.  

4. login jest unique tak?

5. SELECT * jest bez sensu, mów SQLowi co chcesz od niego, bo nie musisz wiedzieć wszystko o użytkowniku. Wystarczy SELECT login,password 

6.Mieszanie kodu HTML z PHP to sajgon, jak widać w zaloguj.php 

7. index.php masz niby prosty routing, ale pomyśl, co się stanie jak dowiesz się o $_REQUEST, dodasz sobie uri do tablicy, sprawdzisz czy dany request jest w tablicy i przekierujesz do tamtego kontrolera. Dla usprawnienia poszukałbym "Simple routing php" w miare po 2011 roku ;)

komentarz 6 sierpnia 2016 przez efiku Szeryf (75,160 p.)
Rozdziel PHP od HTML za pomocą np. Twiga wraz z cache.
komentarz 6 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
Jak tak czytam to jeszcze duzo muszę się nauczyć bo nie rozumiem ponad połowy twojej wypowiedzi. A więc tym, wszystkim się zajmę,a  czy mógłbyś mi powiedzieć czemu nie zapisuje się w mysql ale tak bardziej na rozum kogoś mało doświadczonego z PDO ?
komentarz 6 sierpnia 2016 przez efiku Szeryf (75,160 p.)
komentarz 6 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
Przeczytałem (pijąc herbatkę) i niestety dalej nie mogę zrozumieć dlaczego nie zapisuje się to w bazie danych. Mogli byśmy porozmawiać na prv bo widzę że ty jesteś tu chyba najlepszy w PHP i td ?
komentarz 6 sierpnia 2016 przez efiku Szeryf (75,160 p.)
Nie działam na priv ;)

Twój kod to jest? bo mylisz $_POST z $_GET z tym co masz w formularzu, dodatkowo w formularzu masz name=login name=pass itd xandros podal Ci info ze coś należy dodać do action w formularzu.
komentarz 6 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)

No ok teraz index wygląda tak 

<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);

require_once('functions/login.php');
require_once('functions/register.php');

$page = $_GET['page'];
$action = $_GET['action'];

$login = $_GET['login'];
$password = $_GET['password'];
$password2 = $_GET['password2'];
$steamid = $_GET['steamid'];

switch($page) {

    case'1':
        include('start.php');
        break;
    case'2':
        include('oferta.php');
        break;
    case'3':
        include('pomoc.php');
        break;
    case'4':
        include('zaloguj.php');
        break;
    default:
        include('start.php');
        break;
}

switch($action)
{
    case'reg':
            if(login_exist($login))
            {
                include('oferta.php');
            }else{
                register($_GET['login'], $_GET['password'], $_GET['steamid']);
                include('start.php');
                echo 'pomyślnie zarejestrowano';
            }
}
?>

a zaloguj.php tak 

<!Doctype html>
<html lang="pl">
<head>
	<meta charset="utf-8"/>
	<title>Polygon Lombard</title>
	<meta name="description" content="Na naszej stronie znajdziesz najtańsze coinsy na stronę CSGOpolygon w internecie."/>
	<meta name="keywords" content="csgodouble coins, csgodouble, CSGOcoins, csgocoinspl, coinsy do csgodouble, coinsy za sms, coinsy za psc, tane coinsy do csgodouble, csgopolygon coins, csgopolygon, CSGOcoins, csgocoinspl, coinsy do csgopolygon, tane coinsy do csgopolygon, csgo, counter strike, counter strike global offensive"/>
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
	<meta name="author" content="Kamil Haniewicz">
	<link rel="stylesheet" href="css/logowanie.css" type="text/css"/>
	<link rel="stylesheet" href="css/fontello.css" type="text/css">
	<link href='https://fonts.googleapis.com/css?family=Slabo+27px&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
	<link href='https://fonts.googleapis.com/css?family=Lato:700&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
	
</head>
<body>
<?php include_once("analyticstracking.php") ?>
<div class="container">


	<div class="logo">
		<img src="target.png" alt="Logo" style="float: left; padding-right: 5px; padding-bottom: 5px; padding-top: 5px;"/><div style="padding-bottom: 5px; padding-top: 5px;"><span style="color: #c34f4f">Polygon</span>Lombard</div>
	</div>
	
	
	<div class="nav">
	<ol>
	<li><a href="index.php?page=1">Strona Główna</a></li>
	<li><a href="index.php?page=2">Oferta</a></li>
	<li><a href="index.php?page=3">Pomoc</a></li>
	</ol>
	</div>
	
	
	<div class="content">
	<div style="margin-top: 10px;"></div>
	
	<h1>Zaloguj się!</h1>
	<form action="" method="POST">
	<input type="text" name="login" placeholder="Nazwa użytkownika">
	<input type="password" name="pass" placeholder="Hasło">
	<button type="submit" name="log" >Zaloguj</button>
	</form>
	
		<div style="margin-top: 30px;"></div>
		<div class="styleline"></div>
		<div style="margin-top: 40px;"></div>
		<div class="line"></div>
		<div style="margin-top: 40px;"></div>
		<div class="styleline"></div>
		<div style="margin-bottom: 20px;"></div>

	<form action="index.php?action=reg" method="GET">
	<h1>Zarejestruj się! </h1>
	<input type="text" name="login" placeholder="Nazwa użytkownika">
	<input type="password" name="password" placeholder="Hasło">
	<input type="password" name="password2" placeholder="Hasło2">
	<input type="text" name="steamid" placeholder="SteamID64 lub link do profilu steam">
	<button type="submit" name="register">Zarejestruj</button>
	</form>
	
	<div style="margin-bottom: 100px;"></div>
	<div style="clear: both;"></div>
</div>
			<div class="footer">
			<div class="fb"><a href="https://www.facebook.com/" ><img src="graph/facebook.png" alt="Facebook"/></a></div>
			<div class="yt"><a href="https://www.youtube.pl/"><img src="graph/youtube.png" alt="Youtube"/></a></div>
			<div  style="float: left;">
			<div class="text3">
	<p>Polygon Lombard &copy;Wszelkie prawa zastrzeżone</p>
	</div>
	</div>
	</div>
</div>
</body>
</html>

 

komentarz 6 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
i dalej nie działa
–2 głosów
odpowiedź 6 sierpnia 2016 przez Bartłomiej Mirek Bywalec (2,290 p.)
Sprawdź czy udaje Ci się połączyć z bazą i czy nie wylatuje żaden błąd.

Po za tym polecam przesiaść się na jakiś framework, osobiscie polecam CodeIgniter
komentarz 6 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
Nie nie wylatuje żaden błąd. Można to zobaczyć na stronie poczas rejestracji polygonlombard.esy.es/index.php?page=4

a co do frameworka to narazie chciał bym się nauczyc tradycyjnego tworzenia stron aby mieć jakiekoliek doświadczenie z tym. Potem zapewnie przesiąde się na jakiś framework bo w web devie chyba już od dawna nie kożysta się z samego PHP/html/css
komentarz 6 sierpnia 2016 przez Bartłomiej Mirek Bywalec (2,290 p.)

Problem jest w tym, że dane z formularza próbujesz wyciągnąć z tablicy _GET, a przesyłasz je tam w tablicy _POST

Zamień:
 

$login = $_GET['login'];

na
 

$login = $_POST['login'];

i tak dalej

Jeśli pomogło proszę o naj

komentarz 6 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
Dalej tylko odświeża stronę i czyści inputy.
komentarz 6 sierpnia 2016 przez efiku Szeryf (75,160 p.)

"CodeIgniter"
Jeszcze ktoś poleci starocie to  będę ukrywał, ludzie... w jakich czasach my żyjemy?

komentarz 6 sierpnia 2016 przez xandros Nałogowiec (29,450 p.)
Ja bym polecił slima dla dispatchera :P

Swoją drogą mam dla ciebie guide:

https://www.youtube.com/watch?v=RhcQXFeor9g&index=1&list=PLfdtiltiRHWGc_yY90XRdq6mRww042aEC

 

edit OFC, bo ten słaby edytor nie obsługuje list na YT:

lista: PLfdtiltiRHWGc_yY90XRdq6mRww042aEC

video: RhcQXFeor9g
komentarz 6 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)

Tak jak pisałem wyżej "narazie chciał bym się nauczyc tradycyjnego tworzenia stron aby mieć jakiekoliek doświadczenie z tym. Potem zapewnie przesiąde się na jakiś framework bo w web devie chyba już od dawna nie kożysta się z samego PHP/html/css"

Podobne pytania

0 głosów
1 odpowiedź 499 wizyt
pytanie zadane 6 maja 2019 w PHP przez manager96 Bywalec (2,050 p.)
+2 głosów
1 odpowiedź 411 wizyt
pytanie zadane 7 marca 2018 w PHP przez Narogos Nowicjusz (170 p.)
+1 głos
1 odpowiedź 2,585 wizyt
pytanie zadane 22 maja 2021 w PHP przez Kamil423 Początkujący (350 p.)

92,631 zapytań

141,498 odpowiedzi

319,869 komentarzy

62,011 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...