Я создаю простую систему регистрации членов SPA
. При регистрации – пользователь получает в базе данных – и перенаправляется на страницу профиля. Однако, довольно просто, после попытки зарегистрироваться как «joe», с паролем, «joe» и электронной почтой «joe@joe.com», я перенаправляюсь на страницу профиля, которая показывает, что мое имя пользователя «root». Я проверил, чтобы моя переменная соединения mysqli $username
не смешивалась с хранением данных (как это имеет значение «root»). Вот мой код:
checkreglogin.php
<?php session_start(); $host="localhost"; // Host name $username="root"; // Mysql username $password="bonjour3"; // Mysql password $db_name="itit"; // Database name $tbl_name="members"; // Table name // Connect to server and select databse. $mysqli = new mysqli("$host", "$username", "$password", "$db_name")or die("cannot connect"); // Define $myusername and $mypassword $rmyusername=$_POST['rmyusername']; $rmypassword=$_POST['rmypassword']; $myemail=$_POST['myemail']; $sql2 = $mysqli->prepare("SELECT * FROM $tbl_name WHERE username=? and password=?"); $sql2->bind_param('ss',$rmyusername,$rmypassword); $sql2->execute(); $sql2->store_result();//apply to prepare statement $numRows = $sql2->num_rows; if($numRows != null) { echo "Username taken."; session_destroy(); } else { // Insert data into mysql $sql = "INSERT INTO $tbl_name(username, password, email)VALUES(?,?,?)"; $stmt = $mysqli->prepare($sql); $stmt->bind_param("sss", $rmyusername, $rmypassword, $myemail); $stmt->execute(); $_SESSION['username'] = $rmyusername; } ?>
Вышеупомянутый скрипт запускается, когда пользователь регистрируется. Затем они получают «перенаправленные» (не потому, что это СПА) на страницу профиля ниже:
шаблоны / login_success.php
<?php session_start(); ?> <h1>Login Successful</h1> <h2>Username: <? echo $_SESSION['username']?></h2> <div id="logoutlinkdiv" > <a href = "#" >Log out</a> </div>
Имя пользователя должно показывать «joe», где указано <? echo $_SESSION['username']?>
<? echo $_SESSION['username']?>
, однако вместо этого он говорит «root» …
ОБНОВИТЬ
JS / application.js
$(document).ready(function() { $.get('templates/regform.php', function(data) { $('#register').html(data); $("#registerform").submit(function(e) { e.preventDefault(); if ($('#rmyusername').val() != '' || $('#rmypassword').val() != '' || $('#myemail').val() != '') { if(!isValidEmailAddress($('#myemail').val())) { alert("Please enter a valid email address"); } else { $.post("checkreglogin.php", $(this).serialize(), function(){ $("#main").load("templates/login_success.php"); $("#login").remove(); $("#register").remove(); }); } } else { alert('Please enter a Username/Password and email.'); } }); }); });
ОБНОВИТЬ
Я изменил вызовы $_POST
вызовы $_GET
, и я использовал URL для создания пользователя, и он сработал – однако я получаю пустую страницу с предупреждением об этом:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /Users/Eamon/Sites/checkreglogin.php:1) in /Users/Eamon/Sites/checkreglogin.php on line 3