2012-01-06 5 views
-3

Я пытаюсь создать логины для пользователей. У меня есть sql, который вставляет информацию в базу данных mysql, но после этого я не знаю, как на самом деле запустить логин. На данный момент я вставляю информацию о join_action.php, которая затем перенаправляется на /index.php (ниже). session_start() на /index.php действительно запустит логин? Безусловно, если так, то это не работает.Как зарегистрироваться на php

PHP (join_action.php):

$sql=mysql_query("INSERT INTO users VALUES ('','$name','$password','$email','$date','$time','$random','0','1','0')"); 
      $id=mysql_insert_id(); 
      $_SESSION['id'] = $id; 



      header("Location: http://localhost/index.php"); 

HTML (index.php сверху):

<?php session_start(); ?> 
+0

Не напрямую связана с вашей проблемой, но убедитесь, чтобы проверить атаки SQL Injection. Ваш код потенциально уязвим. – tangrs

+0

@tangrs позаботился об этом. спасибо – kirby

+0

Нет, это не то, что он делает. Само по себе. Также неясно, как создание учетной записи SQL связано с логинами. См. Руководство по: ['session_start'] (http://php.net/session_start). И обязательно запустите Google несколько руководств по PHP и сначала создайте схемы входа. – mario

ответ

2

login.php (проверялось, но должно дать вам правильное представление)

<? 
    @session_start(); 
    if(isset($_POST['login'])){ 
    $name = addslashes({$_POST['login']}); 
    $password = addslashes({$_POST['password']}); 
    $res=mysql_query("SELECT * FROM users WHERE name = '{$name}' AND password = '{$password}'"); 

    if(mysql_num_rows($res)>0) { 
     $_SESSION['loggedin'] = 1; 
     $_SESSION['user'] = mysql_fetch_assoc($res); 
    } else { 
     $_SESSION['loggedin'] = 0; 
     $_SESSION['user'] = null; 
    } 
    } 

    if($_SESSION['loggedin']==1) { 
?> 
    Logged in! 
    <pre><? print_r($_SESSION['user]); ?></pre> 
<? } else { ?> 
    Not logged in...<br> 
    <form method='post' action='login.php'> 
    <div>Login: <input type='text' name='login'></div> 
    <div>Password: <input type='password' name='password'></div> 
    <input type='submit' value='Log In'> 
    </form> 
<? } ?> 
+0

, поэтому фактическое действие, которое выполняло вход в систему, заключалось в настройке переменных сеанса? – kirby

+0

addlashes не будет защищать от инъекций sql –

+0

@LawrenceCherone вопрос был не о SQL-инъекциях – lawrencealan

0

session_start будет инициализировать PHP сессии для страницы, но вы, кажется, не иметь какой-либо код, чтобы фактически манипулировать ими, например, устанавливать их или проверять их действительность или что-то еще, поэтому в основном ничего не будет делать. Это не волшебным образом известно, что вы хотите делать со своей сессией. Все, что у вас есть, это одна строка для установки идентификатора.

+0

, не критикуя мой код, есть ли у вас что-нибудь, что поможет решить проблему. – kirby

+0

Вряд ли критикуя, я ответил на ваш вопрос 'Does session_start() на /index.php фактически запустил логин?' И объяснил, почему нет. Затем вы можете установить нужные значения сеанса и проверить их в верхней части каждой страницы, чтобы убедиться, что пользователь выполнил вход в систему правильно. – Cyclone

2

Загрузите любое количество проектов с открытым исходным кодом и посмотрите, как они обрабатывают логины.

Нет, session_start() напрямую не обрабатывает логин, он только начинает новый сеанс, который МОЖЕТ быть использован скриптом входа.

0

Для начала используйте код session_start(). Для начала session_start() просто начинает сеанс PHP, где сервер начинает отслеживать этого конкретного пользователя. В вашей методологии вам необходимо связать этот сеанс с пользовательскими данными в вашем коде.

Когда я узнавал пользователей PHP, это удобный скрипт действительно помог мне понять методологию: http://www.majordojo.com/php-users/

Хотя это в PHP4, это очень похожий код. :)

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