В общем писал кнопку сохранить, в личном кабинете и столкнулся с такой проблемой, что при нажатии данные только сохраняются и не перезаписываются + хотелось бы настроить редирект на другую страницу. Хотелось бы узнать что делаю не правильно. И посоветуйте что и как лучше сделать. Вот сам скрипт. Код (PHP): <?php session_start(); include_once $_SERVER['DOCUMENT_ROOT']."/system.fns.php"; include_once $_SERVER['DOCUMENT_ROOT']."/modules/functions/functions.com.php"; $conn = db_connect(); if(isset($_POST)){ if (isset($_POST['email'])) { $login = $_POST['email']; if ($login == '') unset($login); } if (isset($_POST['password'])) { $password =$_POST['password']; if ($password =='') unset($password); } $login = stripslashes($login); $login = htmlspecialchars($login); $password = stripslashes($password); $password = htmlspecialchars($password); $login = trim($login); $password = trim($password); $password = md5($password); $password = strrev($password); $password = $password."b3pS6f"; $date=date("m.d.Y"); $result = mysql_query("SELECT id FROM uni_users WHERE us_username='$login'"); $myrow = mysql_fetch_array($result); if (!empty($myrow['id'])) { $_SESSION['err'] = 'Введённый Вами email уже зарегистрирован. Введите другой email или восстановите пароль.'; header("Location: ".$_SERVER['HTTP_HOST'].""); exit(); }else{ $sqlup = "insert into uni_users set us_name = '".$_POST['name']."', us_full_name = '".$_POST['suname']."', us_username = '".$_POST['email']."', us_adress = '".$_POST['city']."', us_phone = '".$_POST['fon']."', us_email = '".$_POST['email']."', us_password = '".$password."', us_group = '8', us_status = '1', us_reg_date = '".$date."' "; $sqlup = mysql_query($sqlup, $conn); $newid = mysql_insert_id(); $goback = 'http://'.$_SERVER['HTTP_HOST']; //var_dump($goback);exit; //redirect($goback); } } ?> Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
Редирект: Код (PHP): header("Location: {$goback}"); Код голимый и нужно переписывать. И не используйте больше mysql_, в новых версиях пыха его удалили. За место него подняли наш не забываемый mysqli_
Re: Нужен редирект и перезапись профайла аккаунта. Ищу решен Та дело в том что код не мой, а одного кулибина так сказать, попросили немного поковыряться, вот как-то так. По поводу "header("Location: {$goback}");" его в конце подключать ? И по поводу "mysqli_" его как проще подключить если просто перезаписать то он заведется?
Заголовки нужно передавать до вывода. Более подробно можно изучить тут: header Кстати первый пример как-раз и показывает, то, что я показал. Гляньте сначала phpinfo(); - убедитесь, что mysqli еще не включен и если он не включен, тогда нужно подключить либу " php_mysqli.dll " и перезапустить сервер. Если он включен, то заведется. Сразу на счет isset - конструкции. В ее прототипе заложен метод " and so on (и так далее) ", переменные могут передаваться бесконечно через запятую. Код (PHP): if($_POST && isset($_POST['email'], $_POST['password'])){ В место того, чтобы писать каждый раз isset, иногда полезно перечислить сразу за 1 раз (Будьте внимательны, конструкция возвращает true в случае если переменная определена, даже если в нее передана пустота она вернет true), ведь фактически без некоторых параметров нельзя вызывать и обновлять базу иначе может быть убийство и иньекции, как тут: Код (PHP): $sqlup = "insert into uni_users set us_name = '".$_POST['name']."', us_full_name = '".$_POST['suname']."', us_username = '".$_POST['email']."', us_adress = '".$_POST['city']."', us_phone = '".$_POST['fon']."', us_email = '".$_POST['email']."', us_password = '".$password."', us_group = '8', us_status = '1', us_reg_date = '".$date."'
Код (PHP): $login = $_POST['email']; if ($login == '') unset($login); А если я пошлю пустые данные? будет нотис, как минимум. Какой-то васян писал. Ответы " код не мой " особо радуют. Напиши свой код тогда, либо оплати услуги.
Re: Нужен редирект и перезапись профайла аккаунта. Ищу решен Notice не будет, если ты пошлешь пустые данные, так как Супер глобальный массив заполнится пустотой и не будет нотиса, а вот, если ты ничего не пошлешь и просто у тебя будет не определенные переменные и не проверив через isset будет нотис. Не нужно путать 2 разные вещи и советовать не правильное русло.
Re: Нужен редирект и перезапись профайла аккаунта. Ищу решен Undefined variable, я прошу прощения конечно. Вообще, в данном куске кода не обязательно что либо слать, ошибка будет всегда, так как: isset($_POST) - всегда true Правильно было бы добавить !empty($_POST) Тем не менее, уничтожать перемененную, а ниже проводить с нею манипуляции как минимум глупо, не?) Я ничего не советовал и какое к черту русло? я на путь истинный его не ставлю, если это имелось ввиду или русло реки?))) Указать на определенный участок кода, что там будет ошибка, это не совет, ага.
Откуда ей взяться? $_POST уже определен как Супер глобальный массив. А значит предупреждений не будет и он вернет: Код (PHP): array(0) { } Когда сделаешь так: Код (PHP): var_dump($_POST); Когда сделаешь так: Код (PHP): if ($_POST) { echo 'Данные'; } Предупреждения не будет и конструкция не отработает по условию истины потому, что данные не переданы, а пустой массив не прокатит по условию, как только передали, сразу выведет "Данные". isset вернет true, потому, что так гласит Таблица сравнения типов. array() является определением и по этому у нас будет некоторая оплошность, также как и с передачей 0 и пустой строки, а так же и с false. То есть все разы будут true: Код (PHP): var_dump(isset($_POST)); $_POST=0; var_dump(isset($_POST)); $_POST=false; var_dump(isset($_POST)); $_POST=null; var_dump(isset($_POST)); За исключением null, он та как - раз и не является определением, он говорит, что переменная уже может не использоваться в определении, если ее вновь потом не определят. Просто нужно проверять всегда место которое не определялось ранее, сильно злобствовать с isset и empty не нужно. Код (PHP): if($_POST && isset($_POST['email'], $_POST['password'])){ Ну сверху то норм, а вот в теле if конструкции получилось не норм. А у empty нет прототипа " and so on (и так далее) ", мы можем передать только 1 параметр. Видно, что писали быстро и на скорую руку, так на втыкал, чтобы было, не думая... Ты утвердил. Это не ошибка.