2013-12-06 1 views
0

Правильно, я занимался этим некоторое время и получил все, чтобы работать, за исключением страницы учетной записи пользователя, мой вопрос; может ли кто-нибудь найти опечатки, которые я сделал здесь, или дать мне небольшую помощь в его работе?Учетная запись пользователя 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 на пропуск (даже сменяя проход в базе данных на пароль и настраивая там, где это необходимо, но то же самое происходит).

Если кто-нибудь может мне помочь, это было бы здорово, спасибо.

+0

Пароли и печенье, как огонь и вода, не смешиваются. –

+0

Должен ли я использовать сеансы для этого, для сайта электронной коммерции. –

+0

Считается, что вместо этого вместо этого нужно ввести данные в сеанс? Гораздо проще отслеживать и гораздо более безопасно – Machavity

ответ

0

Хорошо, всегда хорошо учиться писать какие-то собственные вещи .. но почему бы вам не использовать какую-то существующую платформу для этого, например wordpress, drupal и т. Д., Которые имеют встроенную систему входа?

Ваш код чрезвычайно уязвим для атак. Я мог бы написать любой SQL-код в мои файлы cookie, и вы добавите эту переменную прямо к SQL-запросу (переменная $ email).

+0

Я новичок в этом еще и изучаю, я бы предпочел не использовать платформу с момента и продолжать учиться программировать свой собственный, прежде чем я пойду на что-то еще. Я знаю, что это уязвимо, я пытаюсь заставить его работать, прежде чем я реализую что-нибудь еще. «Я мог бы написать любой SQL-файл в мои файлы cookie, и вы добавите эту переменную в SQL-запрос (переменная $ email).« Я не понимаю, что вы имеете в виду. –

+0

Хорошо, я рекомендую изучить drupal .. вы также изучаете php, но не должны кодировать все вещи .. для части sql проверьте эту ссылку .. http://php.net/manual/en/security .database.sql-injection.php – Hardy

+0

Спасибо, я начну с этого, и спасибо за ссылку –

Смежные вопросы