Serg_pnz,
не хочу использовать jquery, внутренне отторжение к нему) Хочу на чистом js писать. Хотя знаю, что там это все делается без геморроя ========= Сейчас прочитал про сессии(написано: При использовании сессий данные сохраняются во временных файлах на сервере.), вопрос: насколько они сохраняются? |
Цитата:
<body> <form action='login.php' method='POST'> <input type='text' value='<?php echo $_POST['login'] ?>' name='login'> <input type='text' name='pass' value='<?php echo $_POST['pass'] ?>' > <input type='submit' value='Зайти'> </form></body> <?php function senn() { $login = $_POST['login']; $pass = $_POST['pass']; $conn = mysql_connect('localhost', 'gmoryes_login', '*********'); if(mysql_select_db('gmoryes_login', $conn)) { $res = mysql_query("SELECT `name`,`pass` FROM `users` WHERE `name` = '$login' AND `pass` = '$pass'"); $row = mysql_fetch_assoc($res); if($row['name']!='' && $row['pass']!= '') { if($row['avatar']!='') { echo "у вас уже есть аватар, это: ".$row['avatar']; } else { echo " <script> document.body.innerHTML = '' </script> "; echo " <input type='text' id='avatar'> <input type='button' onclick='ava()' value='Установить аватар'> <script> function ava() { var ava = document.getElementById('avatar').value ava = encodeURIComponent(ava) var r = new XMLHttpRequest(); // создаем запрос r.open('POST', 'login.php', true) // открываем r.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // устанавливаем заголовок r.send('ava='+ava) // что посылаем } </script> "; function s(){ $ava = (isset($_POST['ava'])) ? $_POST['ava'] : false; if ($ava) { echo 'ava is '.$ava; echo $row['name'].'<hr>'.$row['pass']; $query = "UPDATE `users` SET `avatar`='%s' WHERE `name`='%s' AND `pass`='%s'"; $query = sprintf($query, mysql_real_escape_string($ava), mysql_real_escape_string($row['name']), mysql_real_escape_string($row['pass'])); mysql_query($query) or die('Error:' . mysql_error()); } else { echo 'else'; } } if($_SERVER['REQUEST_METHOD']=='POST') s(); } } } } if($_SERVER['REQUEST_METHOD']=='POST') senn(); ?> |
о жизни сессии
код конечно... :) . Старайся сразу отделять логику от вывода. js файлы отдельно должны идти. Не работает потому что при аяксе ты не передаешь $login = $_POST['login']; $pass = $_POST['pass']; и включи в php.ini error_reporting = E_ALL , много полезного будешь видеть |
micscr,
Цитата:
Цитата:
Цитата:
|
функцией уровень ошибок можно выставить:
http://php.net/manual/en/function.error-reporting.php да, у тебя там вообще чепуха. В функции s() вот этому: $row['name'] неоткуда взяться. В пыхе переменные сами не ищутся выше, как в js. По идее надо сделать function s($name, $pass) , а эти данные при аякс запросе, в скрипте неоткуда брать. Ты их не передаешь. |
micscr,
:yes: 9xakep, тут запроси id юзера в базе и пихни его в сессию $res = mysql_query("SELECT `name`,`pass` FROM `users` WHERE `name` = '$login' AND `pass` = '$pass'"); А позже сделаешь отбор по id, хранящегося в сессии "UPDATE `users` SET `avatar`='%s' WHERE `id`=".$_SESSION['user_id']; |
micscr,
Serg_pnz, спасибо за советы, обязательно воспользуюсь :) Но пока решил потренироваться, и не могу понять в чем проблема, точнее как правильно сделать, задача: передать данные с текстового поля, на эту же страницу с помощью ajax: [php] <?php echo " <input type='text' value='' id='text'><input type='button' onclick='send()' value='send'> <script> function send() { var text = document.getElementById('text').value var r = new XMLHttpRequest; r.open('GET', 'ex-1.php?text='+encodeURIComponent(text), true) r.send(null) } </script> "; $text = $_GET['text']; echo $text; ?> [/php] [IMG]http://s019.radikal.ru/i616/1205/8f/7e0bff4880e6.png[/IMG] [IMG]http://s019.radikal.ru/i643/1205/d3/f323295d027a.png[/IMG] Данные отправляются, и по 2ому скриншоту видно, что они приходят(или я не прав?), но на страницу они не добавляются, что не так-то? :-E Ура!!! У меня получилось :D :D <?php $con = mysql_connect('localhost', 'gmoryes_login', '****'); mysql_select_db('gmoryes_login', $con); echo " <input type='text' value='' id='text'><input type='button' onclick='send()' value='send'> <script> function send() { var text = document.getElementById('text').value var r = new XMLHttpRequest; r.open('GET', 'ex-1.php?text='+encodeURIComponent(text), true) r.send(null) } </script> "; $text = $_GET['text']; mysql_query("INSERT INTO `users` (avatar) VALUES ('$text')"); ?> |
Почему ничего не выводит?
<?php error_reporting(E_ALL); // докладываем обо всех ошибках, спасибо микскр echo " Введите свой логин: <input type='text' value='' id='login'><br> Введите свой пароль: <input type='text' id='pass'><br> <input type='button' value='Войти' onclick='logIn()'> <script> function logIn() { var login = document.getElementById('login').value login = encodeURIComponent(login) var pass = document.getElementById('pass').value pass = encodeURIComponent(pass) var r = new XMLHttpRequest; r.open('GET', 'login.php?login='+login+'&pass='+pass, true) r.send(null) } </script> "; $connect = mysql_connect('localhost', 'gmoryes_login', '*****'); // заходим $login = (isset($_GET['login'])) ? $_GET['login'] : false; // проверяем есть логин и пароль(отправлены ли они) $pass = (isset($_GET['pass'])) ? $_GET['pass'] : false; mysql_select_db('gmoryes_login', $connect); // конектимся к таблице if($login) { if($pass) { $res = mysql_query("SELECT `name`, `pass` FROM `users` WHERE `name` = '$login' AND `pass` = '$pass'"); $res = mysql_fetch_assoc($res); if($res['name']!='' && $res['pass']!= '') { echo '<b>good</b>'; // почему это не попадет на страницу?? } else { echo '<b>bad</b>'; // и это тоже? } } } ?> Что надо написать? Поскольку в ответе от сервера все в порядке(не считая проблем с кодировками) ![]() |
Цитата:
1) запрашиваешь страницу. Если в адресной строке нет ни login ни pass, то то, что в цитате не выводится. 2) ты вводишь данные в поля и жмешь кнопку. Но ты забыл поставить обработчик r.onreadystatechange, в котором обработаешь ответ, который на картинке. Естественно в этом ответе html тот не нужен, а только 'good' или 'bad'. AJAX - это уже на загруженной странице, js запросил данные с сервера и обработав полученный ответ, что то сделал, изменил dom, например. И насчет твоего sql-запроса, такие вещи решаются запросами вида: select count(*) from users where ... и проверяется полученное число, 0 или более. |
micscr,
даже если я его ставлю, он пишет Undefined :blink: <?php error_reporting(E_ALL); echo " Введите свой логин: <input type='text' value='' id='login'><br> Введите свой пароль: <input type='text' id='pass'><br> <input type='button' value='Войти' onclick='logIn()'> <script> function logIn() { var login = document.getElementById('login').value login = encodeURIComponent(login) var pass = document.getElementById('pass').value pass = encodeURIComponent(pass) var r = new XMLHttpRequest; // создать запрос r.onreadystatechange = function () { if(r.readyState==4 && r.status == 200) { alert(r.responceText) // выводит undefined?? } } r.open('GET', 'login.php?login='+login+'&pass='+pass, true) r.send(null) } </script> "; $connect = mysql_connect('localhost', 'gmoryes_login', 'mishan11235'); // конектимся к БД $login = (isset($_GET['login'])) ? $_GET['login'] : false; $pass = (isset($_GET['pass'])) ? $_GET['pass'] : false; mysql_select_db('gmoryes_login', $connect); // выбираем таблицу if($login) { if($pass) { $res = mysql_query("SELECT `name`, `pass` FROM `users` WHERE `name` = '$login' AND `pass` = '$pass'"); $res = mysql_fetch_assoc($res); if($res['name']!='' && $res['pass']!= '') { echo "good"; // все, это на странице не выводиться! } else { echo "bad"; // как и это! } } } ?> |
Часовой пояс GMT +3, время: 16:47. |