21

(14 відповідей, залишених у Вибір подальшого шляху)

За рік мені потрібно кудись вступати! Мені цікаво хто де вчиться чи вчився? (розкажіть будь-ласка детально про навчання) І куди б Ви мені порадили поступати (живу у Львівській області) ? Мені цікаво вивчати веб дизайн.

22

(37 відповідей, залишених у PHP)

Без англійської на програміста не поступиш. Вчити обовязково!

23

(37 відповідей, залишених у PHP)

Очі.завидющі написав:

Я б радив через свою масквафобію http://www.w3schools.com/ та http://www.codecademy.com/ .

Дякую, я так розумію це на ваш погляд кращі довідники по вивченю програмування.

24

(37 відповідей, залишених у PHP)

Привіт всім форумчанам, хочу вам повідомити що я закинув свій проект (ну якщо позудумати то це скорше ваш проект ніж мій) беруся за книжки для вдосконалення своїх знань! Прошу вибачення за глупі питання які я задавав! Хочу Вас спитатися, чи достатньо знань в цих  довідниках?! Я маю наувазі що якщо я вивчу ідеально основи з цих довідників чи можу я братися до наступного кроку вивчення!
1) html - http://ru.html.net/tutorials/html/
2) css - http://ru.html.net/tutorials/css/
3) php - http://ru.html.net/tutorials/php/
4) MySQL - http://mysqlru.com/

25

(37 відповідей, залишених у PHP)

koala написав:

Може, тоді коржиками(cookies)? Там все прозоро.

Ні, ліпше най будуть сесії!

26

(37 відповідей, залишених у PHP)

koala написав:

Не помиляєтеся. Але вам зарано із сесіями працювати, якщо мало з того тексту зрозуміли, там все розжувано для початківців.

Згоден! Але мені потрібно для створення локацій  в ігрі id ігрока тому потрібно і сесії підключити! До речі в мене виникло нове запитання, по поводу локацій, але я ще його задавати не буду попробую дещо сам зробити(якщо нічого не получиться то задам запитання завтра)!

27

(37 відповідей, залишених у PHP)

koala написав:
Stadnik Roman написав:

Зрозуміло!   unset( $_SESSION['name']); - вона видаляє сесію name?

Ні. Сесія -то щось зовнішнє відносно PHP; $_SESSION надає інтерфейс для роботи із змінними сесіями, тому unset знищить інтерфейс, а не змінні. session_destroy знищує сесію, але (от халепа!) не змінні сесії, тому їх бажано прибити самотужки. А session_start бажано викликати на початку кожного файла, що працює із сесією.

Stadnik Roman написав:

І ще одне питання, ось ми створили $_SESSION['name'] - це є логін пользователя, як мені перенести цю сесію на інший  файл ?
На початку файлу де потрібно її задіяти прописати

 session_start();
 $_SESSION['name'] 

?

Почитайте http://phpfaq.ru/sessions

Прочитав, еле зрозумів мало! Але все ж дещо зрозумів! Потрібно лише на початку ставити session_start(); ! Так, я не  помиляюся?

28

(37 відповідей, залишених у PHP)

koala написав:

Романе, в двох словах:
- session_start має викликатися в усіх файлах, що використовують сесію, незалежно від того, чи вони її розпочинають; якщо сесія вже розпочата, то це просто прикріпить файл до сесії
- session_destroy має викликатися тільки після визову session_start;
- session_destroy не знищує змінні сесії, це треба робити самотужки, наприклад

$_SESSION=array();

Зрозуміло!   unset( $_SESSION['name']); - вона видаляє сесію name? То мені з цього куску коду

  if(isset($_POST['logout'])) {
  unset( $_SESSION['name']);
  session_destroy();
  }

Забрати  session_destroy();
і вставити в

 if ($user_data['password'] == $e_password) {
  session_start();
  $_SESSION['name'] = $e_login;
  session_destroy();
  }

?
І ще одне питання, ось ми створили $_SESSION['name'] - це є логін пользователя, як мені перенести цю сесію на інший  файл ?
На початку файлу де потрібно її задіяти прописати

 session_start();
 $_SESSION['name'] 

?

29

(37 відповідей, залишених у PHP)

funivan написав:

Особисто я не рекомендую приховувати помилки. Помилки треба виправляти.
Приховування помилок сповільнює сайт ;)

Ну я теж так думаю, не дуже хочу щоб моя ігра була створена на одних какашках які приховані! (це я образно сказав) 
Я бачу тільки один вихід виправлення помилки, це видалити строку  session_destroy();

30

(37 відповідей, залишених у PHP)

Очі.завидющі написав:

Просто не викликайте функцію session_destroy() зайвого разу та й все! Це попередження можливо приховати, але все ж краще виправити помилку.

Дякую за відповідь! Але все ж мені інтересно на майбутнє як саме можна приховати? Я читав десь про це, але де саме не паматяю! Здається на одному з етапів вивчення php

31

(37 відповідей, залишених у PHP)

Зрозуміло! Дякую що пояснили!

32

(37 відповідей, залишених у PHP)

Вірно.
Давайте тепер подумаємо як можна обійти цю фішку.
Логічно думаючи ми можемо знищувати тільки ініціалізовані сесії.
Або якщо сесія не ініціалізована тоді і знищувати її не потрібно.

Отже дальше є два варіанти написання коду wink

Так давайте по прядку,
Помилка в цьому кусці коду

 
if(isset($_POST['logout'])) {
 unset( $_SESSION['name']);
  session_destroy();
  }

цим куском ми перевіряємо якщо нажата кнопка logout то ми відключаємо сесію " unset( $_SESSION['name']);"
а це тоді навіщо   session_destroy(); ?
Це виходить що ми намагаємося два рази відключити сесію чи що?
Якщо цей рядок видалити то помилка зникає!

33

(37 відповідей, залишених у PHP)

funivan написав:

В даному випадку помилка очевидна тут навіть коду не потрібно.

Роман, звертаюсь до Вас.

постарайтесь детально перекласти цю фразу і напишіть її тут!! Я впевнений що ви не знаєте її точного перекладу на даному етапі.

Trying to destroy uninitialized session

Переклад - Намагаючись знищити неініціалізованих сесій

34

(37 відповідей, залишених у PHP)

koala написав:

Не хочете свій суперсекретний код викладати - не викладайте, але тоді ми вам точно не допоможемо.

Та ні, який сепр секретний код?! Тут напевне тисячі помилок! Ось -

<?php
  $connect = mysql_connect('localhost', 'root', 'Naruto1996') or die(mysql_error());
  mysql_select_db("games");
   
 # робимо провірку. 
  if(isset($_POST['submit'])){
    $username = $_POST['username'];
    $login = $_POST['login'];
    $password = $_POST['password'];
    $r_password = $_POST['r_password'];
  if ($password == $r_password) {
   $password = md5($password);
    $query = mysql_query ("INSERT INTO users(`username`,`login`,`password`) VALUES ('$username','$login','$password')") or die (mysql_error());
}
   else{
    die ('Пароли не совпадают!');
     }
}
/* кінець коду реєстрації */
?>
Регистрация</br>
<form method="post" action="index.php">
   Ваше имя: <input type="text" name="username"placeholder="username"required/></br>
    Логин:<input type="text" name="login"placeholder="Login"required/></br>
    Пароль:<input type="password" name="password"placeholder="Password"required/></br>
    Повторите пароль:<input type="password" name="r_password"placeholder="Repeat Password"required/></br>
<input name="submit" type="submit" value="Регистрация" required/>
</form>



<?php
 if(isset($_POST['enter'])) {
   $e_login = $_POST['e_login'];
  $e_password = md5($_POST['e_password']);
  
  $query = mysql_query ("SELECT * FROM users WHERE login = '$e_login'");
  $user_data = mysql_fetch_array($query);
  
  if ($user_data['password'] == $e_password) {
  session_start();
  $_SESSION['name'] = $e_login;
  }
  else {
  echo "Не верний пароль или логин";
  }
  }
  
  if(isset($_POST['logout'])) {
  unset( $_SESSION['name']);
  session_destroy();
  }
  
  
  
  if (isset($_SESSION['name'])) 
 {
 echo 'Ви увійшли як<br>'.$e_login.'
     <form method="post" action="index.php">
     <input type="button" value="Войти" onClick=location.href="akk.php">
     <input type="submit" name="logout" value="Выход"/>
     </form>
     ';
}
  else {
echo  '<center>
Вход 
<form method="post" action="index.php">
Логин:<input type="text" name="e_login"placeholder="Login"required/>
Пароль:<input type="password" name="e_password"placeholder="Password"required/>
<input name="enter" type="submit" value="Войти"/>
</form>';
}
?>

А нашот того що попередню тему видалив то це тому що там дуже поганий код, потрібно багато чого виправляти!
Якщо комусь потрібен код реєстрації та входу то я його щойно виклав!

35

(37 відповідей, залишених у PHP)

Очі.завидющі написав:

Просто не викликайте функцію session_destroy() зайвого разу та й все! Це попередження можливо приховати, але все ж краще виправити помилку.

Що ви маєте наувазі

не викликайте функцію session_destroy() зайвого разу

Як це? Цією ж фунццією ми закриваємо сесію!

36

(37 відповідей, залишених у PHP)

Привіт всім! Попередню тему удалив тому що вона була помилковою, можна і так сказати! Весь код був поганий!
Я на годину часу сів за компютер і розібрався що за що відповідає в цьому коді! Всі помилки виправив.
Але виникла нова помилка, коли я увів логін і пароль в браузері, та натиснув кнопку входу в мене все успішно виконало,
на екрані вибило Ви увійшли та кнопка виходу з сесії! На перший погляд все добре, коли я натиснув вийти з сесії я успішно вийшов і знову появилося поле для входу але також над цим полем появилася помилка
Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in Z:\home\localhost\test-proekt\index.php on line 51
Вона не мішає, але все ж було б ліпше її забрати! Мені щось підказує що такі помилки можна скривати здається потрібно перед рядком поставити якись знак (це тільки здається) Це так?
Ну або виправити, але ось її я уж точно без Вашої допомоги не виправлю!
Якщо я Вам ще ненадоїв можете мені будь-ласка в цьому допомогти? Якщо так то виставлю код сторінки!

37

(69 відповідей, залишених у Бази даних)

Щось не так?

38

(69 відповідей, залишених у Бази даних)

Ось так ?

<html>
<head>
<link href="css/mapa.css" rel="stylesheet" type="text/css" /> 
</head>
<body>

<?php
include_once ("cone.php"); 
mysql_query("SET NAMES 'cp1251' COLLATE 'cp1251_general_ci'"); 
$query = "select * from location order by id"; // там много разных операторов, советую почитать в интернете о запросах MySQL 
 $sql = mysql_query($query); 
 $row = mysql_fetch_array($sql); 
 echo "<center>".$row['name'];
 echo "<br>Описание локации: ".$row['opes'];
 
if($_GET['loc']=="1"){ тело функции апдейта БД на первую локацию} 
if($_GET['loc']=="2"){ тело функции апдейта БД на вторую локацию} 
if($_GET['loc']=="3"){ тело функции апдейта БД на третью локацию}

#Оновлення значення поля location у даного гравця відбувається через запит в БД:
$query = "update название_таблицы set location='тут_новый_id_локации' where id_user='тут_id_пользователя'"; 
mysql_query($query);


if($_GET['loc']=="2"){
$query = "UPDATE location_users SET location = 2 WHERE id_user = $userId";
mysql_query($query)
} 

?>

<a href="/mapa.php?loc=1">локация 1</a> 
<a href="/mapa.php?loc=2">локация 2</a> 
<a href="/mapa.php?loc=3">локация 3</a> 
</center>

</body>
</html>
</html>

Лишилося тільки підключити сесії і провірити роботоспособність коду?

39

(69 відповідей, залишених у Бази даних)

Ігрок може переміщатися по локаїям натискаючи на силки!
Тепер я зліплю все до купи що в мене є!
база(в таблицю location я додав парц локації)

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `login` varchar(50) NOT NULL,
  `password` varchar(64) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=cp1251;
CREATE TABLE `loсation` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `opes` varchar(100) NOT NULL, 
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=cp1251;

CREATE TABLE `location_users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_user` int(50) NOT NULL,
  `location` int(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=cp1251;

При переході з профиля ігрок потрапляє на файл mapa.php
те що є на данний момент у файлі

<html>
<head>
<link href="css/mapa.css" rel="stylesheet" type="text/css" /> 
</head>
<body>

<?php
include_once ("cone.php"); 
mysql_query("SET NAMES 'cp1251' COLLATE 'cp1251_general_ci'"); 
$query = "select * from location order by id"; // там много разных операторов, советую почитать в интернете о запросах MySQL 
 $sql = mysql_query($query); 
 $row = mysql_fetch_array($sql); 
 echo "<center>".$row['name'];
 echo "<br>Описание локации: ".$row['opes'];
 

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

при вікриті в браузері цей файл відображає те що є під id1 в таблиці location!
Тепер потрібно зробити переходи з id1 на id2 або на id3! Для цього потрібно в таблиці location_users
заповнити стовпці (зараз воне не заповнені ось в цьому мені потрібно щоб ви допомогли)
Стовпець id заповнюється автоматично (auto_increment), стовпець id_user містить в собі ID користувача, а стовпець location містить в собі ID локації, де зараз знаходиться користувач. При переході гравця в іншу локацію - оновлювати значення поля location у даного гравця.
Оновлення значення відбувається через запит в БД:

$query = "update название_таблицы set location='тут_новый_id_локации' where id_user='тут_id_пользователя'"; 
mysql_query($query);

Пізніше потрібно зробити перехід ігрока по локація
Для цього робимо силки

<a href="/mapa.php?loc=1">локация 1</a> 
<a href="/mapa.php?loc=2">локация 2</a> 
<a href="/mapa.php?loc=3">локация 3</a>

відповідний код в PHP:

if($_GET['loc']=="1"){ тело функции апдейта БД на первую локацию} 
if($_GET['loc']=="2"){ тело функции апдейта БД на вторую локацию} 
if($_GET['loc']=="3"){ тело функции апдейта БД на третью локацию}

Допоможіть мені будь-ласка з цим -
Стовпець id заповнюється автоматично (auto_increment), стовпець id_user містить в собі ID користувача, а стовпець location містить в собі ID локації, де зараз знаходиться користувач. При переході гравця в іншу локацію - оновлювати значення поля location у даного гравця.

40

(69 відповідей, залишених у Бази даних)

(((
Мені не зручно що я Вас так мордую!
Я завтра Вам все детально дозповім, бо зараз я відключаюся (4:25 година)
Но скажу ще пару слів! Детально передивившись те що я написав я і сам не зрозумів що саме я від Вас хотів!
Завтра все перероблю і опишу в чому моя проблема!