03.05.2012, 10:27
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
Serg_pnz,
не хочу использовать jquery, внутренне отторжение к нему) Хочу на чистом js писать. Хотя знаю, что там это все делается без геморроя
=========
Сейчас прочитал про сессии(написано: При использовании сессий данные сохраняются во временных файлах на сервере.), вопрос: насколько они сохраняются?
__________________
оляля, ололо
Последний раз редактировалось 9xakep, 03.05.2012 в 10:38.
|
|
03.05.2012, 10:29
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
Сообщение от Serg_pnz
|
И да - посмотреть бы все файлы.
|
если хочешь весь код увидеть, пожалуйста:
<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();
?>
__________________
оляля, ололо
|
|
03.05.2012, 11:12
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
о жизни сессии
код конечно... . Старайся сразу отделять логику от вывода. js файлы отдельно должны идти.
Не работает потому что при аяксе ты не передаешь
$login = $_POST['login'];
$pass = $_POST['pass'];
и включи в php.ini
error_reporting = E_ALL
, много полезного будешь видеть
|
|
03.05.2012, 13:23
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
micscr,
Сообщение от micscr
|
код конечно...
|
поверь это еще не самый) А вообще это пока только первые php скрипты, в будущем надеюсь будет лучше
Сообщение от micscr
|
Не работает потому что при аяксе ты не передаешь
$login = $_POST['login'];
$pass = $_POST['pass'];
|
так я же их не при аяксе передавал, это я принимал формой
Сообщение от micscr
|
и включи в php.ini
error_reporting = E_ALL
, много полезного будешь видеть
|
погуглил, оказывается мой хостинг, как я понял не предоставляет возожности редактировать php.ini
__________________
оляля, ололо
|
|
03.05.2012, 15:06
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
функцией уровень ошибок можно выставить:
http://php.net/manual/en/function.error-reporting.php
да, у тебя там вообще чепуха. В функции s() вот этому:
$row['name']
неоткуда взяться. В пыхе переменные сами не ищутся выше, как в js.
По идее надо сделать
function s($name, $pass)
, а эти данные при аякс запросе, в скрипте неоткуда брать. Ты их не передаешь.
Последний раз редактировалось micscr, 03.05.2012 в 15:10.
|
|
04.05.2012, 13:42
|
|
Сам по себе
|
|
Регистрация: 09.06.2009
Сообщений: 963
|
|
micscr,
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'];
|
|
04.05.2012, 18:53
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
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
Ура!!! У меня получилось
<?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')");
?>
__________________
оляля, ололо
Последний раз редактировалось 9xakep, 04.05.2012 в 19:31.
|
|
04.05.2012, 21:02
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
Почему ничего не выводит?
<?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>'; // и это тоже?
}
}
}
?>
Что надо написать? Поскольку в ответе от сервера все в порядке(не считая проблем с кодировками)
__________________
оляля, ололо
|
|
05.05.2012, 09:24
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
Цитата:
|
// почему это не попадет на страницу??
// и это тоже?
|
Ну смотри что ты делаешь:
1) запрашиваешь страницу. Если в адресной строке нет ни login ни pass, то то, что в цитате не выводится.
2) ты вводишь данные в поля и жмешь кнопку. Но ты забыл поставить обработчик r.onreadystatechange, в котором обработаешь ответ, который на картинке. Естественно в этом ответе html тот не нужен, а только 'good' или 'bad'.
AJAX - это уже на загруженной странице, js запросил данные с сервера и обработав полученный ответ, что то сделал, изменил dom, например.
И насчет твоего sql-запроса, такие вещи решаются запросами вида:
select count(*) from users where ...
и проверяется полученное число, 0 или более.
Последний раз редактировалось micscr, 05.05.2012 в 09:26.
|
|
05.05.2012, 09:43
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
micscr,
даже если я его ставлю, он пишет Undefined
<?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"; // как и это!
}
}
}
?>
__________________
оляля, ололо
|
|
|
|