За последние 24 часа нас посетил 57761 программист и 7255 роботов. Сейчас ищет 2491 программист ...

Нужен редирект и перезапись профайла аккаунта. Ищу решение.

Тема в разделе "PHP для новичков", создана пользователем Dimadima41, 21 янв 2016.

  1. Dimadima41

    Dimadima41 Новичок

    С нами с:
    17 янв 2016
    Сообщения:
    5
    Симпатии:
    0
    В общем писал кнопку сохранить, в личном кабинете и столкнулся с такой проблемой, что при нажатии данные только сохраняются и не перезаписываются + хотелось бы настроить редирект на другую страницу.
    Хотелось бы узнать что делаю не правильно.
    И посоветуйте что и как лучше сделать.
    Вот сам скрипт.
    Код (PHP):
    1. <?php 
    2. include_once $_SERVER['DOCUMENT_ROOT']."/system.fns.php";
    3. include_once $_SERVER['DOCUMENT_ROOT']."/modules/functions/functions.com.php";
    4. $conn = db_connect();
    5.  
    6. if(isset($_POST)){
    7.     if (isset($_POST['email'])) { 
    8.         $login = $_POST['email']; 
    9.         if ($login == '') unset($login);
    10.     } 
    11.     if (isset($_POST['password'])) { 
    12.         $password =$_POST['password']; 
    13.         if ($password =='') unset($password); 
    14.     } 
    15.     $login = stripslashes($login);
    16.     $login = htmlspecialchars($login);
    17.     $password = stripslashes($password);
    18.     $password = htmlspecialchars($password);
    19.  
    20.    
    21.     $login = trim($login);
    22.     $password = trim($password);
    23.     
    24.     $password    = md5($password); 
    25.     $password    = strrev($password);
    26.     $password    = $password."b3pS6f";
    27.     $date=date("m.d.Y");  
    28.     $result = mysql_query("SELECT id FROM uni_users WHERE us_username='$login'");
    29.     $myrow = mysql_fetch_array($result);
    30.     if (!empty($myrow['id'])) {
    31.         $_SESSION['err'] = 'Введённый Вами email уже зарегистрирован. Введите другой email или восстановите пароль.';
    32.         header("Location: ".$_SERVER['HTTP_HOST']."");
    33.         exit();
    34.     }else{    
    35.     $sqlup = "insert into uni_users
    36.         set 
    37.             us_name = '".$_POST['name']."',
    38.             us_full_name = '".$_POST['suname']."',
    39.             us_username = '".$_POST['email']."',
    40.             us_adress = '".$_POST['city']."',
    41.             us_phone = '".$_POST['fon']."',
    42.             us_email = '".$_POST['email']."',
    43.             us_password = '".$password."',
    44.             us_group = '8',
    45.             us_status = '1', 
    46.             us_reg_date    = '".$date."'    
    47.     ";
    48.     
    49.     $sqlup = mysql_query($sqlup, $conn);
    50.     $newid = mysql_insert_id();
    51.     
    52.     $goback = 'http://'.$_SERVER['HTTP_HOST'];
    53.     //var_dump($goback);exit;
    54.     //redirect($goback);
    55.     }
    56. }
    57.  
    58. ?>
    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  2. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Редирект:
    Код (PHP):
    1. header("Location: {$goback}");
    Код голимый и нужно переписывать.
    И не используйте больше mysql_, в новых версиях пыха его удалили.
    За место него подняли наш не забываемый mysqli_
     
  3. Dimadima41

    Dimadima41 Новичок

    С нами с:
    17 янв 2016
    Сообщения:
    5
    Симпатии:
    0
    Re: Нужен редирект и перезапись профайла аккаунта. Ищу решен

    Та дело в том что код не мой, а одного кулибина так сказать, попросили немного поковыряться, вот как-то так.
    По поводу "header("Location: {$goback}");" его в конце подключать ?
    И по поводу "mysqli_" его как проще подключить если просто перезаписать то он заведется?
     
  4. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Заголовки нужно передавать до вывода.
    Более подробно можно изучить тут:
    header
    Кстати первый пример как-раз и показывает, то, что я показал.
    Гляньте сначала phpinfo(); - убедитесь, что mysqli еще не включен и если он не включен, тогда нужно подключить либу " php_mysqli.dll " и перезапустить сервер.
    Если он включен, то заведется.
    Сразу на счет isset - конструкции.
    В ее прототипе заложен метод " and so on (и так далее) ", переменные могут передаваться бесконечно через запятую.
    Код (PHP):
    1. if($_POST && isset($_POST['email'], $_POST['password'])){
    В место того, чтобы писать каждый раз isset, иногда полезно перечислить сразу за 1 раз (Будьте внимательны, конструкция возвращает true в случае если переменная определена, даже если в нее передана пустота она вернет true), ведь фактически без некоторых параметров нельзя вызывать и обновлять базу иначе может быть убийство и иньекции, как тут:
    Код (PHP):
    1. $sqlup = "insert into uni_users
    2.       set 
    3.          us_name = '".$_POST['name']."',
    4.          us_full_name = '".$_POST['suname']."',
    5.          us_username = '".$_POST['email']."',
    6.          us_adress = '".$_POST['city']."',
    7.          us_phone = '".$_POST['fon']."',
    8.          us_email = '".$_POST['email']."',
    9.          us_password = '".$password."',
    10.          us_group = '8',
    11.          us_status = '1', 
    12.          us_reg_date   = '".$date."'
     
  5. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    Код (PHP):
    1.        $login = $_POST['email']; 
    2.        if ($login == '') unset($login);
    3.  
    А если я пошлю пустые данные? будет нотис, как минимум. Какой-то васян писал.

    Ответы " код не мой " особо радуют. Напиши свой код тогда, либо оплати услуги.
     
  6. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Re: Нужен редирект и перезапись профайла аккаунта. Ищу решен

    Notice не будет, если ты пошлешь пустые данные, так как Супер глобальный массив заполнится пустотой и не будет нотиса, а вот, если ты ничего не пошлешь и просто у тебя будет не определенные переменные и не проверив через isset будет нотис.

    Не нужно путать 2 разные вещи и советовать не правильное русло.
     
  7. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    Re: Нужен редирект и перезапись профайла аккаунта. Ищу решен

    Undefined variable, я прошу прощения конечно.
    Вообще, в данном куске кода не обязательно что либо слать, ошибка будет всегда, так как:

    isset($_POST) - всегда true
    Правильно было бы добавить !empty($_POST)

    Тем не менее, уничтожать перемененную, а ниже проводить с нею манипуляции как минимум глупо, не?)

    Я ничего не советовал и какое к черту русло? я на путь истинный его не ставлю, если это имелось ввиду или русло реки?)))

    Указать на определенный участок кода, что там будет ошибка, это не совет, ага.
     
  8. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Откуда ей взяться? $_POST уже определен как Супер глобальный массив.
    А значит предупреждений не будет и он вернет:
    Код (PHP):
    1. array(0) { } 
    Когда сделаешь так:
    Код (PHP):
    1. var_dump($_POST); 
    Когда сделаешь так:
    Код (PHP):
    1. if ($_POST) {
    2.     echo 'Данные';
    3. } 
    Предупреждения не будет и конструкция не отработает по условию истины потому, что данные не переданы, а пустой массив не прокатит по условию, как только передали, сразу выведет "Данные".
    isset вернет true, потому, что так гласит Таблица сравнения типов.
    array() является определением и по этому у нас будет некоторая оплошность, также как и с передачей 0 и пустой строки, а так же и с false.
    То есть все разы будут true:
    Код (PHP):
    1. var_dump(isset($_POST));
    2. $_POST=0;
    3. var_dump(isset($_POST));
    4. $_POST=false;
    5. var_dump(isset($_POST));
    6. $_POST=null;
    7. var_dump(isset($_POST)); 
    За исключением null, он та как - раз и не является определением, он говорит, что переменная уже может не использоваться в определении, если ее вновь потом не определят.
    Просто нужно проверять всегда место которое не определялось ранее, сильно злобствовать с isset и empty не нужно.
    Код (PHP):
    1. if($_POST && isset($_POST['email'], $_POST['password'])){
    Ну сверху то норм, а вот в теле if конструкции получилось не норм.
    А у empty нет прототипа " and so on (и так далее) ", мы можем передать только 1 параметр.
    Видно, что писали быстро и на скорую руку, так на втыкал, чтобы было, не думая...
    Ты утвердил.
    Это не ошибка.