mi sono già presentato rispettando le regole, ed ora ho bisogno del vostro aiuto.
Sono nuovo nel linguaggio php, sinceramente ho sempre sviluppato app web con altri linguaggi e solitamente mi occupo di lato server side in Java.
Però sto costruendo il sito web di un gioco che stiamo sviluppando e mi serve interfacciarlo con il db del gioco, almeno per la parte utente.
Compilo in windows 10 pro 64 bit o su ubuntu mate 16.04 con phpstorm 2017.1.4 in entrambi gli so.
Sono riuscito a dare una struttura al mio sito web che vi elenco:
maindirectory
-css
-fonts
-images
-main
-----main.php
scripts
-----js_scripts
----jquery
----script.js
-----php_scripts
----dbconnect.php
pages.php/html
allora ho creato il main php che contiene questo
Codice: Seleziona tutto
<?php
/**
* Created by PhpStorm.
* User: Christian
* Date: 11/05/2017
* Time: 12:13
*/
spl_autoload_register(function ($class)
{
require_once 'scripts/php_scripts/' . $class . '.php';
});
class main {
function sec_session_start()
{
$session_name = 'sec_session_id'; // Imposta un nome di sessione
$secure = false; // Imposta il parametro a true se vuoi usare il protocollo 'https'.
$httponly = true; // Questo impedirà ad un javascript di essere in grado di accedere all'id di sessione.
ini_set('session.use_only_cookies', 1); // Forza la sessione ad utilizzare solo i cookie.
$cookieParams = session_get_cookie_params(); // Legge i parametri correnti relativi ai cookie.
session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
session_name($session_name); // Imposta il nome di sessione con quello prescelto all'inizio della funzione.
session_start(); // Avvia la sessione php.
session_regenerate_id(); // Rigenera la sessione e cancella quella creata in precedenza.
}
public static function sanitize($string, $filter = null)
{
switch ($filter) {
case 'none':
return $string;
break;
case 'email':
return filter_var($string, FILTER_SANITIZE_EMAIL);
break;
case 'string':
return filter_var($string, FILTER_SANITIZE_STRING);
break;
case 'int':
return filter_var($string, FILTER_SANITIZE_NUMBER_INT);
break;
case 'url':
return filter_var($string, FILTER_SANITIZE_URL);
break;
default:
return filter_var($string, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
break;
}
}
}
poi la mia classe dbconnect.php
Codice: Seleziona tutto
<?php
class dbconnect
{
private $_pdo;
function __construct()
{
try {
$hostname = "localhost";
$dbname = "mydb";
$user = "root";
$pass = "123root";
$this->_pdo = new PDO('mysql:host=' . $hostname . ';dbname=' . $dbname, $user, $pass);
} catch (PDOException $e) {
header("location: error.php"); //Se c'è un errore nella connessione fai il redirect
}
}
public function query()
{
$sql = $this->_pdo->prepare('SELECT * FROM users');
$sql->execute();
$res = $sql->fetchAll();
return $res;
}
function login2($username, $password){
echo '<script>alert("mi sono loggato bella")</script>';
}
*/
public function login($username, $password)
{
$sql = $this->_pdo->prepare('SELECT * FROM users WHERE username = :username');
$sql->bindParam(':username', $username);
$sql->execute();
$res = $sql->fetchAll(PDO::FETCH_ASSOC);
if ($sql->rowCount() === 1) {
if (password_verify($password, $res[0]['password'])) {
$_SESSION['login_user'] = $username;
header("location: loggedin.php");//A posto del redirect puoi anche ritornare TRUE/FALSE o $res
} else {
$res = "Your Password is invalid";
return $res;
}
} else {
$res = "Your Login Name is invalid";
return $res;
}
}
public function register($dates, $username, $password, $email){
//Nella prepare, meglio avere nomi diversi per le variabili da confrontare
$sql = $this->_pdo->prepare('SELECT * FROM users WHERE username = :username OR email= :email');
$sql->bindParam(':username', $username);
$sql->bindParam(':email', $username);
$sql->execute();
$res = $sql->fetchAll(PDO::FETCH_ASSOC);
if ($sql->rowCount() === 1) {
$res = "Username or email registred yet";
return $res;
}else {
//La password non può essere in plain text ma le devi criptare (anche perchè nella fase di login vefichi gli hash)
//$pass = password_hash($password, PASSWORD_DEFAULT);
//$pass = password_hash($password, PASSWORD_BCRYPT);
// $password = "123456";
$pass = hash('sha256', $password);
$dates = $dates;
$username = $username;
$password = $pass;
$email = $email;
$trophy = 0;
$gems = 100;
$gold = 0;
//Quando fai l'insert non puoi inserire le variabili direttamente nella prepare
$stmt = $this->_pdo->prepare("INSERT INTO users (date_of_birth, username, password, email, trofei, gems, gold)
VALUES (:dates, :username, :password, :email, :trophy, :gems, :gold)");
$stmt->bindParam(':dates', $dates);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':trophy', $trophy);
$stmt->bindParam(':gems', $gems);
$stmt->bindParam(':gold', $gold);
$stmt->execute();
$res = $sql->fetchAll(PDO::FETCH_ASSOC);
$res = "Successfully Registrated";
return $res;
header("location: index.php");
}
}
}
e nella mia register.php
Codice: Seleziona tutto
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once 'main/main.php';
$db = new dbconnect;
$main = new main;
$dbwork = "";
$main->sec_session_start();
$username = "";
$password = "";
$email = "";
$dates = "";
$register = "";
//if(!empty($_POST)) {
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(isset($_POST['username'])) {
// check if the username has been set
$username = $_POST['username'];
echo main::sanitize($_POST['username'], 'string');
}
if(isset($_POST['password'])) {
$password = $_POST['password'];
// echo main::sanitize($_POST['password'], 'string');
//echo '<script> hide_login(); </script>';
}
if(isset($_POST['email'])){
$email = $_POST['email'];
echo main::sanitize($_POST['email'], 'string');
}
$dates = "1991-10-13 : 00:00:00";
$register = $db->register($dates,$username,$password,$email);
echo $register;
}
?>
e la mia form di registrazione
Codice: Seleziona tutto
<form action="<?php ($_SERVER["PHP_SELF"]);?>" method="POST">
<label for="nome" style="font-family: foo; font-size: 12px;color:#FFD700;">Nome</label><br><br>
<input type="text" name="name" style="width:250px;"> <label for ="opzione" style="font-family: foo; font-size: 12px;color:#FFD700;">(*)facoltativo</label><br><br>
<label for="cognome" style="font-family: foo; font-size: 12px;color:#FFD700;">Cognome</label><br><br>
<input type="text" name="surname" style="width:250px;"> <label for="opzione2" style="font-family: foo; font-size: 12px;color:#FFD700;">(*)facoltativo</label> <br><br>
<label for="user" style="font-family: foo; font-size: 12px;color:#FFD700;">Username</label><br><br>
<input type="text" name="username" style="width:250px;"><br><br>
<label for="mail" style="font-family: foo; font-size: 12px;color:#FFD700;">Email:</label><br><br>
<input type="email" name="email" style="width:250px;"><br><br>
<label for="password" style="font-family: foo; font-size: 12px;color:#FFD700;">Password:</label><br><br>
<input type="password" name="password" style="width:250px;"><br><br>
<label for="dob-day" style="font-family: foo; font-size: 12px;color:#FFD700;" class="control-label">Data di Nascita</label>
<div class="controls">
<select name="dob-day" id="dob-day">
<option value="">Giorno</option>
<option value="">---</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="dob-month" id="dob-month">
<option value="">Mese</option>
<option value="">-----</option>
<option value="01">January</option>
<option value="02">February</option>
<option value="03">March</option>
<option value="04">April</option>
<option value="05">May</option>
<option value="06">June</option>
<option value="07">July</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<select name="dob-year" id="dob-year">
<option value="">Anno</option>
<option value="">----</option>
<option value="2025">2025</option>
<option value="2024">2024</option>
<option value="2023">2023</option>
<option value="2022">2022</option>
<option value="2021">2021</option>
<option value="2020">2020</option>
<option value="2019">2019</option>
<option value="2018">2018</option>
<option value="2017">2017</option>
<option value="2016">2016</option>
<option value="2015">2015</option>
<option value="2014">2014</option>
<option value="2013">2013</option>
<option value="2012">2012</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2008">2008</option>
<option value="2007">2007</option>
<option value="2006">2006</option>
<option value="2005">2005</option>
<option value="2004">2004</option>
<option value="2003">2003</option>
<option value="2002">2002</option>
<option value="2001">2001</option>
<option value="2000">2000</option>
<option value="1999">1999</option>
<option value="1998">1998</option>
<option value="1997">1997</option>
<option value="1996">1996</option>
<option value="1995">1995</option>
<option value="1994">1994</option>
<option value="1993">1993</option>
<option value="1992">1992</option>
<option value="1991">1991</option>
<option value="1990">1990</option>
<option value="1989">1989</option>
<option value="1988">1988</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
<option value="1985">1985</option>
<option value="1984">1984</option>
<option value="1983">1983</option>
<option value="1982">1982</option>
<option value="1981">1981</option>
<option value="1980">1980</option>
<option value="1979">1979</option>
<option value="1978">1978</option>
<option value="1977">1977</option>
<option value="1976">1976</option>
<option value="1975">1975</option>
<option value="1974">1974</option>
<option value="1973">1973</option>
<option value="1972">1972</option>
<option value="1971">1971</option>
<option value="1970">1970</option>
<option value="1969">1969</option>
<option value="1968">1968</option>
<option value="1967">1967</option>
<option value="1966">1966</option>
<option value="1965">1965</option>
<option value="1964">1964</option>
<option value="1963">1963</option>
<option value="1962">1962</option>
<option value="1961">1961</option>
<option value="1960">1960</option>
<option value="1959">1959</option>
<option value="1958">1958</option>
<option value="1957">1957</option>
<option value="1956">1956</option>
<option value="1955">1955</option>
<option value="1954">1954</option>
<option value="1953">1953</option>
<option value="1952">1952</option>
<option value="1951">1951</option>
<option value="1950">1950</option>
<option value="1949">1949</option>
<option value="1948">1948</option>
<option value="1947">1947</option>
<option value="1946">1946</option>
<option value="1945">1945</option>
<option value="1944">1944</option>
<option value="1943">1943</option>
<option value="1942">1942</option>
<option value="1941">1941</option>
<option value="1940">1940</option>
<option value="1939">1939</option>
<option value="1938">1938</option>
<option value="1937">1937</option>
<option value="1936">1936</option>
<option value="1935">1935</option>
<option value="1934">1934</option>
<option value="1933">1933</option>
<option value="1932">1932</option>
<option value="1931">1931</option>
<option value="1930">1930</option>
<option value="1929">1929</option>
<option value="1928">1928</option>
<option value="1927">1927</option>
<option value="1926">1926</option>
<option value="1925">1925</option>
<option value="1924">1924</option>
<option value="1923">1923</option>
<option value="1922">1922</option>
<option value="1921">1921</option>
<option value="1920">1920</option>
<option value="1919">1919</option>
<option value="1918">1918</option>
<option value="1917">1917</option>
<option value="1916">1916</option>
<option value="1915">1915</option>
<option value="1914">1914</option>
<option value="1913">1913</option>
<option value="1912">1912</option>
<option value="1911">1911</option>
<option value="1910">1910</option>
<option value="1909">1909</option>
<option value="1908">1908</option>
<option value="1907">1907</option>
<option value="1906">1906</option>
<option value="1905">1905</option>
<option value="1904">1904</option>
<option value="1903">1903</option>
<option value="1901">1901</option>
<option value="1900">1900</option>
</select>
</div>
<br><br>
<label for="nazionalita" style="font-family: foo; font-size: 12px;color:#FFD700;">Nazionalita:</label><br><br>
<div class="controls">
<select name="dob-day" id="dob-day">
<option value="">-- Nazione --</option>
<option value="afghan">Afghan</option>
<option value="albanian">Albanian</option>
<option value="algerian">Algerian</option>
<option value="american">American</option>
<option value="andorran">Andorran</option>
<option value="angolan">Angolan</option>
<option value="antiguans">Antiguans</option>
<option value="argentinean">Argentinean</option>
<option value="armenian">Armenian</option>
<option value="australian">Australian</option>
<option value="austrian">Austrian</option>
<option value="azerbaijani">Azerbaijani</option>
<option value="bahamian">Bahamian</option>
<option value="bahraini">Bahraini</option>
<option value="bangladeshi">Bangladeshi</option>
<option value="barbadian">Barbadian</option>
<option value="barbudans">Barbudans</option>
<option value="batswana">Batswana</option>
<option value="belarusian">Belarusian</option>
<option value="belgian">Belgian</option>
<option value="belizean">Belizean</option>
<option value="beninese">Beninese</option>
<option value="bhutanese">Bhutanese</option>
<option value="bolivian">Bolivian</option>
<option value="bosnian">Bosnian</option>
<option value="brazilian">Brazilian</option>
<option value="british">British</option>
<option value="bruneian">Bruneian</option>
<option value="bulgarian">Bulgarian</option>
<option value="burkinabe">Burkinabe</option>
<option value="burmese">Burmese</option>
<option value="burundian">Burundian</option>
<option value="cambodian">Cambodian</option>
<option value="cameroonian">Cameroonian</option>
<option value="canadian">Canadian</option>
<option value="cape verdean">Cape Verdean</option>
<option value="central african">Central African</option>
<option value="chadian">Chadian</option>
<option value="chilean">Chilean</option>
<option value="chinese">Chinese</option>
<option value="colombian">Colombian</option>
<option value="comoran">Comoran</option>
<option value="congolese">Congolese</option>
<option value="costa rican">Costa Rican</option>
<option value="croatian">Croatian</option>
<option value="cuban">Cuban</option>
<option value="cypriot">Cypriot</option>
<option value="czech">Czech</option>
<option value="danish">Danish</option>
<option value="djibouti">Djibouti</option>
<option value="dominican">Dominican</option>
<option value="dutch">Dutch</option>
<option value="east timorese">East Timorese</option>
<option value="ecuadorean">Ecuadorean</option>
<option value="egyptian">Egyptian</option>
<option value="emirian">Emirian</option>
<option value="equatorial guinean">Equatorial Guinean</option>
<option value="eritrean">Eritrean</option>
<option value="estonian">Estonian</option>
<option value="ethiopian">Ethiopian</option>
<option value="fijian">Fijian</option>
<option value="filipino">Filipino</option>
<option value="finnish">Finnish</option>
<option value="french">French</option>
<option value="gabonese">Gabonese</option>
<option value="gambian">Gambian</option>
<option value="georgian">Georgian</option>
<option value="german">German</option>
<option value="ghanaian">Ghanaian</option>
<option value="greek">Greek</option>
<option value="grenadian">Grenadian</option>
<option value="guatemalan">Guatemalan</option>
<option value="guinea-bissauan">Guinea-Bissauan</option>
<option value="guinean">Guinean</option>
<option value="guyanese">Guyanese</option>
<option value="haitian">Haitian</option>
<option value="herzegovinian">Herzegovinian</option>
<option value="honduran">Honduran</option>
<option value="hungarian">Hungarian</option>
<option value="icelander">Icelander</option>
<option value="indian">Indian</option>
<option value="indonesian">Indonesian</option>
<option value="iranian">Iranian</option>
<option value="iraqi">Iraqi</option>
<option value="irish">Irish</option>
<option value="israeli">Israeli</option>
<option value="italian">Italian</option>
<option value="ivorian">Ivorian</option>
<option value="jamaican">Jamaican</option>
<option value="japanese">Japanese</option>
<option value="jordanian">Jordanian</option>
<option value="kazakhstani">Kazakhstani</option>
<option value="kenyan">Kenyan</option>
<option value="kittian and nevisian">Kittian and Nevisian</option>
<option value="kuwaiti">Kuwaiti</option>
<option value="kyrgyz">Kyrgyz</option>
<option value="laotian">Laotian</option>
<option value="latvian">Latvian</option>
<option value="lebanese">Lebanese</option>
<option value="liberian">Liberian</option>
<option value="libyan">Libyan</option>
<option value="liechtensteiner">Liechtensteiner</option>
<option value="lithuanian">Lithuanian</option>
<option value="luxembourger">Luxembourger</option>
<option value="macedonian">Macedonian</option>
<option value="malagasy">Malagasy</option>
<option value="malawian">Malawian</option>
<option value="malaysian">Malaysian</option>
<option value="maldivan">Maldivan</option>
<option value="malian">Malian</option>
<option value="maltese">Maltese</option>
<option value="marshallese">Marshallese</option>
<option value="mauritanian">Mauritanian</option>
<option value="mauritian">Mauritian</option>
<option value="mexican">Mexican</option>
<option value="micronesian">Micronesian</option>
<option value="moldovan">Moldovan</option>
<option value="monacan">Monacan</option>
<option value="mongolian">Mongolian</option>
<option value="moroccan">Moroccan</option>
<option value="mosotho">Mosotho</option>
<option value="motswana">Motswana</option>
<option value="mozambican">Mozambican</option>
<option value="namibian">Namibian</option>
<option value="nauruan">Nauruan</option>
<option value="nepalese">Nepalese</option>
<option value="new zealander">New Zealander</option>
<option value="ni-vanuatu">Ni-Vanuatu</option>
<option value="nicaraguan">Nicaraguan</option>
<option value="nigerien">Nigerien</option>
<option value="north korean">North Korean</option>
<option value="northern irish">Northern Irish</option>
<option value="norwegian">Norwegian</option>
<option value="omani">Omani</option>
<option value="pakistani">Pakistani</option>
<option value="palauan">Palauan</option>
<option value="panamanian">Panamanian</option>
<option value="papua new guinean">Papua New Guinean</option>
<option value="paraguayan">Paraguayan</option>
<option value="peruvian">Peruvian</option>
<option value="polish">Polish</option>
<option value="portuguese">Portuguese</option>
<option value="qatari">Qatari</option>
<option value="romanian">Romanian</option>
<option value="russian">Russian</option>
<option value="rwandan">Rwandan</option>
<option value="saint lucian">Saint Lucian</option>
<option value="salvadoran">Salvadoran</option>
<option value="samoan">Samoan</option>
<option value="san marinese">San Marinese</option>
<option value="sao tomean">Sao Tomean</option>
<option value="saudi">Saudi</option>
<option value="scottish">Scottish</option>
<option value="senegalese">Senegalese</option>
<option value="serbian">Serbian</option>
<option value="seychellois">Seychellois</option>
<option value="sierra leonean">Sierra Leonean</option>
<option value="singaporean">Singaporean</option>
<option value="slovakian">Slovakian</option>
<option value="slovenian">Slovenian</option>
<option value="solomon islander">Solomon Islander</option>
<option value="somali">Somali</option>
<option value="south african">South African</option>
<option value="south korean">South Korean</option>
<option value="spanish">Spanish</option>
<option value="sri lankan">Sri Lankan</option>
<option value="sudanese">Sudanese</option>
<option value="surinamer">Surinamer</option>
<option value="swazi">Swazi</option>
<option value="swedish">Swedish</option>
<option value="swiss">Swiss</option>
<option value="syrian">Syrian</option>
<option value="taiwanese">Taiwanese</option>
<option value="tajik">Tajik</option>
<option value="tanzanian">Tanzanian</option>
<option value="thai">Thai</option>
<option value="togolese">Togolese</option>
<option value="tongan">Tongan</option>
<option value="trinidadian or tobagonian">Trinidadian or Tobagonian</option>
<option value="tunisian">Tunisian</option>
<option value="turkish">Turkish</option>
<option value="tuvaluan">Tuvaluan</option>
<option value="ugandan">Ugandan</option>
<option value="ukrainian">Ukrainian</option>
<option value="uruguayan">Uruguayan</option>
<option value="uzbekistani">Uzbekistani</option>
<option value="venezuelan">Venezuelan</option>
<option value="vietnamese">Vietnamese</option>
<option value="welsh">Welsh</option>
<option value="yemenite">Yemenite</option>
<option value="zambian">Zambian</option>
<option value="zimbabwean">Zimbabwean</option>
</select>
</div>
<br>
<br>
<input type="submit" name="submit" value="Register" style="width:150px; font-family: foo;">
<input name="_token" value="" type="hidden">
</form>
praticamente registra nel db ma con valori vuoti, l'unico valore che prende è la data perchè la passo a mano e soprattutto non fa la redirect a index.php
cosa sbaglio??
perchè sulla submit non mi prende i valori da me scritti nelle caselle di testo?
Spero possiate aiutarmi