Правильно, я занимался этим некоторое время и получил все, чтобы работать, за исключением страницы учетной записи пользователя, мой вопрос; может ли кто-нибудь найти опечатки, которые я сделал здесь, или дать мне небольшую помощь в его работе?Учетная запись пользователя PHP MySql в обход файлов cookie
Сайт кажется, чтобы обойти эту часть и перейти прямо к еще (как показано ниже):
<?
if(isset($_COOKIE['ID_my_site'])){
$email = $_COOKIE['ID_my_site'];
$pass = $_COOKIE['Key_my_site'];
$con = mysqli_connect(DATABASE STUFF) or die(mysqli_error());
$check = mysqli_query($con,"SELECT email, pass2 FROM userAccount WHERE email=$email")or die(mysqli_error());
while($info = mysqli_fetch_array($check)){
if ($pass != $info['pass2']){
echo "Wrong Password or Email!, Please <a href='login.php'>Login here</a> to see your account or <a href='register.php'>Register here</a>.";
}else{
$con=mysqli_connect(DATABASE STUFF);
$sqlCommand = "(SELECT * FROM userAccount WHERE email=$email)";
$query = mysqli_query($con,$sqlCommand) or die("Error: ".mysqli_error($con));
$column = mysqli_fetch_array($query);
echo "<section class='userName'><h3>".$column['firstName']." ".$column['surname']."</h3></section>";
echo "<section class='address'>".$column['addressLine1']."<br />".$column['addressLine2']."<br />".$column['county']."<br />".$column['country']."<br />".$column['postCode']."</section>";
echo "<section class='email'><h3>".$column['email']."</h3></section>";
echo "<section class='passwordUpdate'><a href='update.php?user_id=".$column['user_id']."'>Change Password</a></section>";
}
}
«еще», что он идет прямо к независимо от того, что:
}else{
echo "You cannot see this page, Please <a href='login.php'>Login here</a> to see your account or <a href='register.php'>Register here</a>.";
}
Ниже это процесс Логин, только в случае, если кто-нибудь спросит:
<?
$con = mysqli_connect(DATABASE STUFF) or die(mysqli_error($con));
if(isset($_COOKIE['ID_my_site'])){
$email = $_COOKIE['ID_my_site'];
$pass = $_COOKIE['Key_my_site'];
$check = mysqli_query($con,"SELECT email, pass2 FROM userAccount WHERE email='".$_POST['email']."'")or die(mysqli_error($con));
while($info = mysqli_fetch_array($check)){
if ($pass != $info['pass2']){
}else{
header("Location: http://www.littlepenguindesigns.co.uk/pages/CMX/pages/userAccount.php");
}
}
}
if (isset($_POST['submit'])) {
if(!$_POST['email'] | !$_POST['pass']) {
die('You did not fill in a required field.');
}
if (!get_magic_quotes_gpc()) {
$_POST['email'] = addslashes($_POST['email']);
}
if(IsInjected($email)){
die('Bad email value!');
}
$check = mysqli_query($con,"SELECT * FROM userAccount WHERE email='".$_POST['email']."'")or die(mysqli_error($con));
$check2 = mysqli_num_rows($check);
if ($check2 == 0) {
die('That user does not exist in our database. <a href="http://www.littlepenguindesigns.co.uk/pages/CMX/pages/registration.php">Register</a>');
}
while($info = mysqli_fetch_array($check)){
$_POST['pass'] = stripslashes($_POST['pass']);
$info['pass2'] = stripslashes($info['pass2']);
$_POST['pass'] = md5($_POST['pass']);
if($_POST['pass'] != $info['pass2']) {
die('Incorrect password, please <a href="http://www.littlepenguindesigns.co.uk/pages/CMX/pages/login.php">try again</a>.');
}else{
$_POST['email'] = stripslashes($_POST['email']);
$hour = time() + 3600;
setcookie(ID_my_site, $_POST['email'], $hour);
setcookie(Key_my_site, $_POST['pass'], $hour);
header("Location: http://www.littlepenguindesigns.co.uk/pages/CMX/pages/userAccount.php");
}
}
}else{
header("Location: http://www.littlepenguindesigns.co.uk/pages/CMX/pages/login.php");
}
function IsInjected($str){
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)');
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str)){
return true;
}else{
return false;
}
}
и регистрационную форму в файле PHP:
<form action="extras/loginProcess.php" method="post" name="login_form">
Email: <input type="text" name="email" /><br />
Password: <input type="password" name="pass" id="pass" /><br />
<input type="submit" name="submit" value="Sign in" />
</form>
Наконец СТОЛ в MyPHPAdmin:
CREATE TABLE `userAccount` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`firstName` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`surname` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`addressLine1` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`addressLine2` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`county` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`country` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`postCode` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`email2` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`pass` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
`pass2` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;
База данных правильно, и я пытался изо всех сил, чтобы сделать эту работу, продолжал идти обратно в код по умолчанию, где я знаю, что это работает в основном быть безопасно.
Я уже пробовал сменить pass2 на пропуск (даже сменяя проход в базе данных на пароль и настраивая там, где это необходимо, но то же самое происходит).
Если кто-нибудь может мне помочь, это было бы здорово, спасибо.
Пароли и печенье, как огонь и вода, не смешиваются. –
Должен ли я использовать сеансы для этого, для сайта электронной коммерции. –
Считается, что вместо этого вместо этого нужно ввести данные в сеанс? Гораздо проще отслеживать и гораздо более безопасно – Machavity