[Решено] Не добавляется новый пользователь в БД

Тема в разделе "PHP", создана пользователем Chakidze, 1 май 2018.

Метки:
Статус темы:
Закрыта.
  1. Chakidze

    Chakidze

    Регистрация:
    1 май 2018
    Сообщения:
    0
    Симпатии:
    0
    Вообщем вот код
    PHP:
    <?php
    $db
    mysql_connect("localhost","root","") or die ('ошибка');
    if (
    $db) echo ('успешно');

    mysql_select_db ("sitenok",$db);
    if(isset(
    $_POST['submit'])){
        
    $login $_POST['login'];
        
    $password $_POST['password'];
        
    $rpassword $_POST['r-password'];
    }

    if (
    $password == $rpassword) {
        echo 
    "Успешно зарегистрировались";
        
    mysql_query("INSERT INTO register (login,password) VALUES('$login','$password')");
    }

    else{
        echo 
    'Вы ввели неверный пароль!';
    }
    ?>

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    <form method="post" action="site.php" name='form'>
    <p>Логин</p>
        <input type="text" name="login" required><br>
        <p>Пароль</p>
        <input type = "text" name="password" required><br>
        <p>Повторный пароль</p>
        <input type = "text" name= "r-password" required><br>
        <input type = "submit"  value="Готово" required>
    </form>
    </body>
    </html>
    проверял на подключение к mysql. Всё работает, но не хочет добавлять новых пользователей
     
    Lasted edited by : 1 май 2018
  2. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    если подключение есть, значит $password == $rpassword не равны
     
  3. Chakidze

    Chakidze

    Регистрация:
    1 май 2018
    Сообщения:
    0
    Симпатии:
    0
    теперь проблема в этом
    пишет: Не удается изменить информацию заголовка-заголовки, уже отправленные (вывод Z:\home\chak.ru\www\exit.php:1) в Z:\home\chak.ru\www\exit.php
    PHP:
    setcookie('user_id'$row['user_id'],time() + (60*60*24*30));
    setcookie('username'$row['username'],time() + (60*60*24*30));
    $home_url 'http://home.php' $_SERVER['HTTP_HOST'];
    header('location: ' $home_url);
     
    Lasted edited by : 6 май 2018
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Все заголовки должны устанавливаться до начала контента! В вашем случае это означает, что setcookie и header должны вызываться до первого html тега.
     
    $iD нравится это.
  5. Chakidze

    Chakidze

    Регистрация:
    1 май 2018
    Сообщения:
    0
    Симпатии:
    0
    по подробнее можно?
     
  6. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    выложите весь код для начала, потому что гадать не просто
     
  7. Chakidze

    Chakidze

    Регистрация:
    1 май 2018
    Сообщения:
    0
    Симпатии:
    0
    Код авторизации

    PHP:
    <?php
    $db 
    mysqli_connect ('localhost''root''''base');

    if (!isset(
    $_COOKIE['user_id'])){
        if(isset(
    $_POST['submit'])){
            
    $user_username mysqli_real_escape_string($dbtrim($_POST['username']));
            
    $user_password mysqli_real_escape_string($dbtrim($_POST['password']));
            if(!empty(
    $user_username) && !empty($user_password)){
                
    $query = ("SELECT `user_id`  , `username` FROM `signup` WHERE username = '$user_username' AND password = '$user_password'");
            
    $data mysqli_query ($db$query);
            if (
    mysqli_num_rows($data) == 1) {
               
            
    $row mysqli_fetch_assoc($data);
            
    setcookie('password'$row['password'],time() + (60*60*24*30));
            
    setcookie('username'$row['username'],time() + (60*60*24*30));
            
    $home_url 'http://' $_SERVER['HTTP_HOST'];
             
    header("Location: /home.php");exit;


       
            }
           
            else{
                echo 
    'нет пользователя';
            }
            }
                    else{
                        echo
    'заполните все поля';
                    }
                }
            }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title></title>

    </head>
    <body>

    <?php
    if(empty($_COOKIE['username'])) {
    ?>
    <section>
    <form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
    <p>Авторизация</pre> <a href = 'home.php'>Регистрация</a><br>
    <label for='username'>Логин</label>
    <input type = "text" name= "username" ><br>
    <label for='password'>Пароль</label>
        <input type = "text" name="password" ><br>
         <input type="submit" name ="submit" value = 'готово'><br>
    </form>
    <?php
    }
    else{
       
        
    ?>
        <p> Мой профиль </p>
        <p> Выйти</p>
        <?php
    }

    ?>
    </section>
    </body>
    </html>

    --- Добавлено, 6 май 2018 ---
    Код регистрации, он рабочий
    PHP:
    <?php
    //подключаемся к бд и проверяем на работоспособность
    $db mysqli_connect ('localhost''root''''base') or die ('Неподключен');
    if (
    $db) echo 'Подключён ';
    //проверяем работоспособность кнопки
    if(isset($_POST['submit'])){


    ////выводит полученные значение от пользователя в бд и присваем переменные, а так же защищаем от вред.систем
    $username mysqli_real_escape_string($dbtrim($_POST['username']));
    $password mysqli_real_escape_string($dbtrim($_POST['password']));
    $password2 mysqli_real_escape_string($dbtrim($_POST['password2']));
    //проверяем на ошибки введённые пользователем, чтобы поля не были пустыми и совпадали с проверочным паролем.
    if (!empty($username) && !empty($password) && !empty($password2) && ($password == $password2)) {
    $query "SELECT * FROM signup WHERE username = '$username'";
    $data mysqli_query($db$query);
    //проверка логина, существует ли он в бд, если нет то мы его сохраняем в бд
    if (mysqli_num_rows($data) == 0) {
        
    $query "INSERT INTO signup (username, password) VALUES ('$username', '$password')";
    mysqli_query ($db,$query);
    echo 
    'Все готово, зарегались';
        
    mysqli_close($db);
        exit();
        }
       
    else {
        echo 
    'логин уже существует';
    }
    }
    }
    ?>
    --- Добавлено, 6 май 2018 ---
    ошибка здесь, но я не могу исправить
    $row = mysqli_fetch_assoc($data);
    setcookie('password', $row['password'],time() + (60*60*24*30));
    setcookie('username', $row['username'],time() + (60*60*24*30));
    $home_url = 'http://' . $_SERVER['HTTP_HOST'];
    header("Location: /home.php");exit;
     
  8. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    перепроверьте свой скрипт. не должно быть проблем.. попробовал тестовую версию без БД:
    PHP:
    <?php
    //$db = mysqli_connect('localhost', 'root', '', 'base');

    if (!isset($_COOKIE['user_id'])) {
        if (isset(
    $_POST['submit'])) {
    //        $user_username = mysqli_real_escape_string($db, trim($_POST['username']));
    //        $user_password = mysqli_real_escape_string($db, trim($_POST['password']));
    //        if (!empty($user_username) && !empty($user_password)) {
    //            $query = ("SELECT `user_id`  , `username` FROM `signup` WHERE username = '$user_username' AND password = '$user_password'");
    //            $data = mysqli_query($db, $query);
    //            if (mysqli_num_rows($data) == 1) {

    //                $row = mysqli_fetch_assoc($data);

                    
    $row = [
                            
    'password' => '123',
                        
    'username' => 'ewq',
                    ];
                    
    setcookie('password'$row['password'], time() + (60 60 24 30));
                    
    setcookie('username'$row['username'], time() + (60 60 24 30));
                    
    $home_url 'http://' $_SERVER['HTTP_HOST'];
                    
    header("Location: /a.php");
                    exit;


    //            } else {
    //                echo 'нет пользователя';
    //            }
    //        } else {
    //            echo 'заполните все поля';
    //        }
        
    }
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title></title>

    </head>
    <body>

    <?php
    if (empty($_COOKIE['username'])) {
    ?>
    <section>
        <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
            <p>Авторизация</pre> <a href='home.php'>Регистрация</a><br>
                <label for='username'>Логин</label>
                <input type="text" name="username"><br>
                <label for='password'>Пароль</label>
                <input type="text" name="password"><br>
                <input type="submit" name="submit" value='готово'><br>
        </form>
        <?php
        
    }
        else {

            
    ?>
            <p> Мой профиль </p>
            <p> Выйти</p>
            <?php
        
    }

        
    ?>
    </section>
    </body>
    </html>
    Ну и рекомендую к прочтению http://php.net/manual/ru/function.header.php
     
  9. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Вероятно, в оригинале там BOM символ в начале файла.

    Chakidze, все фалы надо сохранять в кодировке UTF-8 без BOM. Ну, и пользуйтесь нормальным редактором кода (хотя бы Sublime Text).
     
    $iD нравится это.
  10. Chakidze

    Chakidze

    Регистрация:
    1 май 2018
    Сообщения:
    0
    Симпатии:
    0
    da,verno
     
Статус темы:
Закрыта.