[How2] Basic UCP - PDO, OOP für Anfänger

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [How2] Basic UCP - PDO, OOP für Anfänger

      Jetzt auch auf Github!
      github.com/C3010/SA-MP-UCP

      Tutorial
      Ja ja, es gibt bereits sehr viele Tutorials, nur sind die meisten out of date. Da die Interesse an PHP momentan sehr steigt und viele daran interessiert sind langsam was eigenes anzufangen dachte ich mir, ich mache ein kleines Beispiel. Ich werde versuchen alles bestmöglich zu erklären, jedoch ist es etwas mehr Code als man es von anderen Basics gewohnt ist, deswegen sind einige PHP Grundlagen vorrausgesetzt.

      Bevor wir anfangen solltest du dir diesen Beitrag durchlesen, um zu wissen was PDO ist und wieso ich in diesem Beispiel zu PDO greife und nicht zu der veralteten mysql() Methode.

      Ich werde dir nicht erklären wie du ein richtiges UCP entwickelst, denn im endeffekt wird es nur ein Login und eine Seite um die Stats zu sehen.
      Da aber die meisten sich die veraltete Tutorials durchlesen, mache ich dennoch ein kleines Update sodass du mit deinen Codes immer auf den neusten Stand bist.

      Fangen wir an.
      Zunächst legen wir uns 2 Verzeichnisse und 1 Unterverzeichnis an

      pages
      web/css


      Und nun die nötigen Dateien

      pagesweb/css
      account.phpstyle.css
      index.php

      Im Hauptverzeichnisse benötigen wir ebenfalls 4 Dateien

      Configuration.php
      Connection.php
      Page.php
      index.php


      Zu einigen Dateien benötige ich keine große Erklärung schreiben und spare mir das Tippen und dir zugleich deine Zeit.
      Also fangen wir einfach mal mit etwas Copy&Paste an.

      Folgendes fügst du in die style.css

      CSS-Quellcode: style.css

      1. @charset "UTF-8";
      2. * {
      3. margin: 0;
      4. padding: 0;
      5. border: 0;
      6. font-size: 99%;
      7. font-family: 'Open Sans', 'Arial';
      8. outline: none !important;
      9. -webkit-box-sizing: border-box;
      10. -moz-box-sizing: border-box;
      11. box-sizing: border-box;
      12. vertical-align: baseline;
      13. }
      14. article, aside, details, figcaption, figure,
      15. footer, header, hgroup, menu, nav, section {
      16. display: block;
      17. }
      18. ol, ul {
      19. list-style: none;
      20. }
      21. blockquote, q {
      22. quotes: none;
      23. }
      24. blockquote:before, blockquote:after,
      25. q:before, q:after {
      26. content: '';
      27. content: none;
      28. }
      29. table {
      30. border-collapse: collapse;
      31. border-spacing: 0;
      32. }
      33. a {
      34. color: #ffffff;
      35. text-decoration: none;
      36. transition: ease all .4s;
      37. -moz-transition: ease all .4s;
      38. -webkit-transition: ease all .4s;
      39. -o-transition: ease all .4s;
      40. -ms-transition: ease all .4s;
      41. }
      42. a:hover {
      43. text-decoration: underline;
      44. }
      45. body {
      46. cursor: default;
      47. margin: 0;
      48. padding: 0;
      49. color: #ffffff;
      50. background: #171717;
      51. font-weight: 400;
      52. text-shadow: 1px 2px 0 rgba(0, 0, 0, .3);
      53. }
      54. h1, h2, h3, h4 {
      55. font-weight: 400;
      56. }
      57. h1 {
      58. font-size: 21pt;
      59. margin-bottom: 15px;
      60. }
      61. input {
      62. width: 100%;
      63. padding: 5px;
      64. margin-bottom: 15px;
      65. color: white;
      66. border: none;
      67. transition: all .4s;
      68. -webkit-transition: all .4s;
      69. -moz-transition: all .4s;
      70. -o-transition: all .4s;
      71. }
      72. input[type="text"],
      73. input[type="mail"],
      74. input[type="password"],
      75. textarea {
      76. border: 2px solid #df3e2d;
      77. background: rgba(0, 0, 0, .3);
      78. }
      79. input[type="text"]:hover,
      80. input[type="mail"]:hover,
      81. input[type="password"]:hover,
      82. textarea:hover {
      83. border-color: #F24E3D;
      84. }
      85. input[type="submit"],
      86. button {
      87. background: #df3e2d;
      88. text-decoration: none;
      89. cursor: pointer;
      90. text-align: center;
      91. }
      92. input[type="submit"]:hover,
      93. button:hover {
      94. background: #F24E3D;
      95. }
      96. .alert {
      97. padding: 8px;
      98. color: #ffffff;
      99. font-size: 9pt;
      100. font-weight: 600;
      101. background: #4EB54A;
      102. margin-bottom: 15px;
      103. }
      104. .alert-error {
      105. background: #F24E3D;
      106. }
      107. .grid {
      108. width: 500px;
      109. margin: 0 auto;
      110. }
      111. #wrapper {
      112. margin: 50px auto;
      113. }
      114. .menu {
      115. margin: 30px auto;
      116. text-align: center;
      117. }
      118. .menu li {
      119. display: inline-block;
      120. padding: 0 10px;
      121. }
      122. .left {
      123. float: left;
      124. }
      125. .right {
      126. float: right;
      127. }
      128. .clear {
      129. clear: both;
      130. }
      131. @media only screen and (max-width: 800px) {
      132. .grid {
      133. width: 90%;
      134. }
      135. }
      Alles anzeigen
      Das kommt in die Configuration.php und nicht vergessen die Daten anzupassen.

      PHP-Quellcode: Configuration.php

      1. <?php
      2. if(!defined('ACCESS')) header('Location: index.php');
      3. $_CFG = [
      4. 'MYSQL' => [
      5. 'HOST' => '127.0.0.1',
      6. 'USER' => 'root',
      7. 'PASS' => '123456',
      8. 'DATA' => 'samp_ucp'
      9. ],
      10. 'SITE' => [
      11. 'NAME' => 'SA:MP UCP'
      12. ]
      13. ];
      Alles anzeigen
      Dies kommt in die Connection.php (es ist nichts weiter als eine Klasse für die MySQL Verbindung, sollte sich von selbst erklären)

      PHP-Quellcode: Connection.php

      1. <?php
      2. if(!defined('ACCESS')) header('Location: index.php');
      3. class Connection {
      4. private $connection = null;
      5. public function createConnection($data) {
      6. if(!$this->connection) {
      7. try {
      8. $this->connection = new PDO("mysql:host={$data[0]};dbname={$data[3]};charset=utf8", $data[1], $data[2]);
      9. $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      10. $this->connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
      11. $this->connection->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'");
      12. $this->connection->exec('set names utf8');
      13. mb_internal_encoding('UTF-8');
      14. } catch(PDOException $ex) {
      15. die($ex->getMessage());
      16. }
      17. }
      18. }
      19. public function getConnection() {
      20. return $this->connection;
      21. }
      22. }
      Alles anzeigen
      Nun sind wir mit dem Copy&Paste erstmal fertig.
      Fangen wir mit der index.php an, also die Hauptdatei welche immer als erstes aufgerufen wird.
      Wie schon erwähnt sollte man einige PHP Grundlagen beherschen.

      Zunächst öffnen wir den PHP Tag und starten eine session, falls noch keine gestartet ist.
      Im normalfall brauchen wie die Abfrage nicht, aber wir lassen es sicherheitshalber drinne:

      PHP-Quellcode

      1. if(session_status() == PHP_SESSION_NONE) session_start();
      Nun setzen wir einige Einstellungen fest, sind nicht sehr wichtig aber könnte im späteren nützlich werden.

      Erklärungen
      set_time_limit, ini_set, date_default_timezone_set, error_reporting,

      PHP-Quellcode

      1. @set_time_limit(0);
      2. @ini_set('memory_limit', -1);
      3. @ini_set('display_errors', true);
      4. @date_default_timezone_set('Europe/Berlin');
      5. error_reporting(E_ALL);
      Nun definieren wir eine Variable, sodass fremde außer auf die index.php auf keine andere Dateien zugreifen können.

      PHP-Quellcode

      1. define('ACCESS', true);
      Deswegen haben wir auch folgende Abfrage in einigen Dateien

      PHP-Quellcode

      1. if(!defined('ACCESS')) header('Location: index.php');
      Es leitet den User zurück auf index.php, wenn ACCESS nicht definiert ist. Da in der index.php die Variable definiert ist, können wir nur über die index.php auf die anderen Dateien zugreifen.

      So nun geht's aber weiter. Wir inkludieren nun die anderen 3 Dateien im Hauptverzeichnis.

      PHP-Quellcode

      1. require_once('Configuration.php');
      2. require_once('Connection.php');
      3. require_once('Page.php');
      Und nun stellen wir eine Verbindung zu unserer MySQL Datenbank her. Dazu benutzen wir die Connection Klasse, welche wir bereits oben erstellt haben.

      PHP-Quellcode

      1. $pdo = new Connection();
      2. $pdo->createConnection(array(
      3. $_CFG['MYSQL']['HOST'],
      4. $_CFG['MYSQL']['USER'],
      5. $_CFG['MYSQL']['PASS'],
      6. $_CFG['MYSQL']['DATA']
      7. ));
      Und kommen wir zum Ende der index.php.

      PHP-Quellcode

      1. return new Page($_REQUEST, $_CFG, $pdo->getConnection());
      Wir erstellen ein neues Objekt welche die Funktionen von der Page Klasse erbt und geben den Konstruktor zurück.
      So müsste nun unsere index.php aussehen

      PHP-Quellcode: index.php

      1. <?php
      2. if(session_status() == PHP_SESSION_NONE) session_start();
      3. @set_time_limit(0);
      4. @ini_set('memory_limit', -1);
      5. @ini_set('display_errors', true);
      6. @date_default_timezone_set('Europe/Berlin');
      7. error_reporting(E_ALL);
      8. define('ACCESS', true);
      9. require_once('Configuration.php');
      10. require_once('Connection.php');
      11. require_once('Page.php');
      12. $pdo = new Connection();
      13. $pdo->createConnection(array(
      14. $_CFG['MYSQL']['HOST'],
      15. $_CFG['MYSQL']['USER'],
      16. $_CFG['MYSQL']['PASS'],
      17. $_CFG['MYSQL']['DATA']
      18. ));
      19. return new Page($_REQUEST, $_CFG, $pdo->getConnection());
      Alles anzeigen
      So und nun kommen wir zu der Page Klasse. Wir fügen folgenden Code in der Page.php Klasse ein.
      Auch hier werde ich keine Erklärung schreiben, da sich das alles eigentlich von selbst erklären sollte.

      PHP-Quellcode: Page.php

      1. <?php
      2. if(!defined('ACCESS')) header('Location: index.php');
      3. class Page {
      4. private $page = 'index',
      5. $dir;
      6. public $request, $cfg, $pdo;
      7. public function __construct($request, $cfg, $pdo, $dir = 'pages') {
      8. $this->request = $request;
      9. $this->cfg = $cfg;
      10. $this->pdo = $pdo;
      11. $this->dir = $dir;
      12. if(isset($request['p'])) {
      13. if(strtolower($request['p']) == 'logout') {
      14. session_destroy();
      15. header('Location: index.php');
      16. }
      17. if($this->fileExists($request['p'])) {
      18. $this->page = $request['p'];
      19. }
      20. }
      21. $this->display();
      22. }
      23. private function fileExists($page) {
      24. if(file_exists($this->dir . '/' . strtolower($page) . '.php')) {
      25. return true;
      26. }
      27. }
      28. private function getFile($page) {
      29. return $this->dir . '/' . strtolower($page) . '.php';
      30. }
      31. private function display() {
      32. require_once($this->getFile($this->page));
      33. }
      34. public function isLoggedIn() {
      35. if(isset($_SESSION['USERNAME'], $_SESSION['PASSWORD'])) {
      36. $stmt = $this->pdo->prepare('SELECT NULL FROM `Accounts` WHERE `Username` = :username AND `Password` = :password LIMIT 1');
      37. $stmt->execute(array(
      38. ':username' => $_SESSION['USERNAME'],
      39. ':password' => $_SESSION['PASSWORD']
      40. ));
      41. if($stmt->rowCount()) {
      42. return true;
      43. }
      44. }
      45. }
      46. public function getData($row) {
      47. if($this->isLoggedIn()) {
      48. $stmt = $this->pdo->prepare('SELECT `' . $row . '` FROM `Accounts` WHERE `Username` = :username LIMIT 1');
      49. $stmt->execute(array(
      50. ':username' => $_SESSION['USERNAME']
      51. ));
      52. $obj = $stmt->fetch(PDO::FETCH_ASSOC);
      53. return $obj[$row];
      54. }
      55. }
      56. }
      Alles anzeigen
      Für dich werden die 2 Funktionen isLoggedIn() und getData() am wichtigsten sein.
      Mit isLoggedIn() können wir abfragen, ob der User eingeloggt ist und mit getData() können wir Daten vom Spieler auslesen.
      Nehmen wir an, wir wollen das Level auslesen, dann benutzen wir

      PHP-Quellcode

      1. echo $this->getData('Level');
      Also weiter. Weiter gehts mit den pages Verzeichnis. Wir fügen in index.php und account.php den folgendem Inhalt ein.

      PHP-Quellcode: index.php

      1. <?php
      2. if(!defined('ACCESS')) header('Location: index.php');
      3. if($this->isLoggedIn()) {
      4. header('Location: index.php?p=account');
      5. }
      6. if(isset($this->request['login'])) {
      7. if(isset($this->request['username'], $this->request['password'])) {
      8. $username = $this->request['username'];
      9. // Ohne Verschlüsslung:
      10. $password = $this->request['password'];
      11. //MD5:
      12. //$password = md5($this->request['password']);
      13. $stmt = $this->pdo->prepare('SELECT `Username`, `Password` FROM `Accounts` WHERE `Username` = :username AND `Password` = :password LIMIT 1');
      14. $stmt->execute(array(
      15. ':username' => $username,
      16. ':password' => $password
      17. ));
      18. if($stmt->rowCount()) {
      19. $obj = $stmt->fetch(PDO::FETCH_OBJ);
      20. $_SESSION['USERNAME'] = $obj->Username;
      21. $_SESSION['PASSWORD'] = $obj->Password;
      22. header('Location: index.php?p=account');
      23. } else {
      24. $error = 'Falsche Zugangsdaten.';
      25. }
      26. }
      27. }
      28. ?>
      29. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      30. <html xmlns="http://www.w3.org/1999/xhtml">
      31. <head>
      32. <title><?php echo $this->cfg['SITE']['NAME']; ?></title>
      33. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      34. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
      35. <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" />
      36. <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic">
      37. <link rel="stylesheet" href="web/css/style.css" />
      38. </head>
      39. <body>
      40. <div id="wrapper" class="grid">
      41. <ul class="menu">
      42. <li>
      43. @@d04513ec73d7ec09530f8d1ea6fa2b3b963b285e@@
      44. </li>
      45. </ul>
      46. <h1>Login</h1>
      47. <?php if(isset($error)) { ?>
      48. <div class="alert alert-error"><?php echo $error; ?></div>
      49. <?php } ?>
      50. <form method="post">
      51. <input type="text" name="username" placeholder="Benutzername" />
      52. <input type="password" name="password" placeholder="Passwort" />
      53. <input type="submit" name="login" value="Einloggen" />
      54. </form>
      55. </div>
      56. </body>
      57. </html>
      Alles anzeigen

      PHP-Quellcode: account.php

      1. <?php
      2. if(!defined('ACCESS')) header('Location: index.php');
      3. if(!$this->isLoggedIn()) {
      4. header('Location: index.php');
      5. }
      6. ?>
      7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      8. <html xmlns="http://www.w3.org/1999/xhtml">
      9. <head>
      10. <title><?php echo $this->cfg['SITE']['NAME']; ?></title>
      11. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      12. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
      13. <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" />
      14. <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic">
      15. <link rel="stylesheet" href="web/css/style.css" />
      16. </head>
      17. <body>
      18. <div id="wrapper" class="grid">
      19. <ul class="menu">
      20. <li>
      21. @@3b9aac5d843d6a2e50877205db31acfff379923b@@
      22. </li>
      23. <li>
      24. @@ead2674b810cbe8503d875858b62873c1a46afbf@@
      25. </li>
      26. </ul>
      27. <h1>Account</h1>
      28. <b>Name:</b> <?php echo $this->getData('Username'); ?><br />
      29. <b>Level:</b> <?php echo $this->getData('Level'); ?>
      30. </div>
      31. </body>
      32. </html>
      Alles anzeigen
      Es ist kein richtiges Tutorial sondern etwas für Anfänger welche bereits die Grundlagen von PHP beherschen und auch die Codes verstehen.
      Zu den HTML und CSS Teil habe ich keine Erklärung gegeben, da es nicht wirklich zum Tutorial gehört und man HTML und CSS schon beherschen sollte, bevor man mit PHP beginnt.

      In der index.php prüfen wir ob der User angemeldet ist und falls ja leiten wir ihn zu seiner Statistik. In der account.php das selbe nur umgekehrt.
      Die Abfrage mit dem Login sollte bereits selbst erklärend sein.

      Das Tutorial dient mehr oder weniger um up to date zu bleiben und die neuste PHP Version nutzen zu können.
      Sollten Fragen offen stehen kannst du die gerne stellen. :)

      04.05.2016
      Mehrsprachig
      Auf Anfrage von @Whice. erkläre ich dir heute wie du ein einfaches Sprachsystem erstellen kannst.
      Dazu habe ich bereits eine Klasse erstellt welche du du in den Hauptverzeichnis legen und anschließend ein Ordner "lang" anlegen musst.

      PHP-Quellcode: Language.php

      1. <?php
      2. /*
      3. * @author C3O
      4. */
      5. class Language {
      6. const DEFAULT_LANGUAGE = 'de';
      7. const SESSION_NAME = 'LANGUAGE';
      8. public $language,
      9. $json;
      10. /**
      11. * @param $language
      12. */
      13. public function setLanguage($language) {
      14. $this->language = $language;
      15. if(isset($_SESSION[self::SESSION_NAME])) {
      16. if($this->exists($_SESSION[self::SESSION_NAME])) {
      17. $this->language = $_SESSION[self::SESSION_NAME];
      18. }
      19. }
      20. if(!$this->exists($this->language)) {
      21. $this->language = self::DEFAULT_LANGUAGE;
      22. }
      23. $language = $this->language;
      24. $content = file_get_contents("lang/{$language}.json");
      25. $this->json = json_decode($content, true);
      26. }
      27. /**
      28. * @return mixed
      29. */
      30. public function json() {
      31. return $this->json;
      32. }
      33. /**
      34. * @return array
      35. */
      36. public function getLanguages() {
      37. $files = [];
      38. $dir = scandir('lang/');
      39. foreach($dir as $key => $value) {
      40. if(strpos(strtolower($value), '.json') !== false) {
      41. $value = str_replace('.json', '', strtolower($value));
      42. $files[] = strtoupper($value);
      43. }
      44. }
      45. return $files;
      46. }
      47. /**
      48. * @param $language
      49. * @return bool
      50. */
      51. public function exists($language = '') {
      52. if(file_exists('lang/' . $language . '.json')) {
      53. return true;
      54. }
      55. return false;
      56. }
      57. /**
      58. * @param $string
      59. * @param array $placeholders
      60. * @param array $replaces
      61. * @return mixed
      62. */
      63. public function getReplaced($string, $placeholders = array(), $replaces = array()) {
      64. $text = str_replace($placeholders, $replaces, $string);
      65. return $text;
      66. }
      67. }
      Alles anzeigen
      Die Sprachdatei inkludierst du nun in deiner index.php

      PHP-Quellcode

      1. require_once('Language.php');
      Nun erstellen wir ein neues Objekt

      PHP-Quellcode

      1. $language = new Language();
      2. $language->setLangauge('DE');
      Nun geben wir die $language Variable unserer Page Klasse weiter.

      PHP-Quellcode

      1. return new Page($_REQUEST, $_CFG, $pdo->getConnection(), $language);
      Den Konstruktor der Page Klasse müssen wir nun anpassen

      PHP-Quellcode

      1. public function __construct($request, $cfg, $pdo, $language, $dir = 'pages') {
      2. $this->language = $language;
      3. //...
      4. }
      Und folgendes in der Page Klasse definieren, nicht vergessen!

      PHP-Quellcode

      1. public $request, $cfg, $pdo, $language;
      So nun sind wir fertig und können die Klasse benutzen. Wir erstellen uns im lang Verzeichnis eine neue Datei

      JavaScript-Quellcode: DE.json

      1. {
      2. "Welcome": "Willkommen!"
      3. }
      Hier können wir nun alle Texte in einem JSON Array reinschreiben und nutzen können wir es dann wie folgt

      PHP-Quellcode

      1. <?php echo $this->language->json()['Welcome']; ?>
      Wenn du eine weitere Sprache hinzufügen möchtest bspw. englisch erstellst du im lang Ordner die Datei EN.json welche dann zum Beispiel so aussehen kann

      JavaScript-Quellcode: EN.json

      1. {
      2. "Welcome": "Welcome!"
      3. }
      Nun kannst du eine Seite erstellen wo der Nutzer seine Sprache für sich selbst ändern kann.
      Das müsste dann ungefähr so aussehen

      PHP-Quellcode

      1. $lang = 'en';
      2. if($this->language->exists($lang)) {
      3. $_SESSION['LANGUAGE'] = strtoupper($lang);
      4. $this->language->setLanguage($lang);
      5. }
      Es ist auch möglich Platzerhalter zu benutzen.

      Ein kleines Beispiel

      JavaScript-Quellcode: DE.json

      1. {
      2. "Welcome": "Willkommen %username%!"
      3. }

      PHP-Quellcode: account.php

      1. <?php echo $this->language->getReplaced($this->language->json()['Welcome'], array('%username%'), array($this->getData('Username'))); ?>

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von C3O ()

    • Whice. schrieb:

      Kannst du denn einen guten Editor empfehlen?
      Ich selbst benutze seit 2 Jahren Notepad++, aber für einen Anfänger würde ich PhpStorm empfehlen ist auch ein Favorit von mir.
    • hmm bekomme folgende Fehlermeldungen:

      Notice: Undefined property: stdClass::$Username in /users/whice/www/cp/pages/index.php on line 20

      Notice: Undefined property: stdClass::$Password in /users/whice/www/cp/pages/index.php on line 21

      Warning: Cannot modify header information - headers already sent by (output started at /users/whice/www/cp/pages/index.php:20) in /users/whice/www/cp/pages/index.php on line 22

      Sind die Zeilen:

      Quellcode: index.php

      1. $_SESSION['USERNAME'] = $obj->Username;
      2. $_SESSION['PASSWORD'] = $obj->Password;
      3. header('Location: index.php?p=account');

      //EDIT


      Ja Notepad habe ich auch, PhpStorm werde ich mir mal anschauen :)
    • Whice. schrieb:

      hmm bekomme folgende Fehlermeldungen:

      Notice: Undefined property: stdClass::$Username in /users/whice/www/cp/pages/index.php on line 20

      Notice: Undefined property: stdClass::$Password in /users/whice/www/cp/pages/index.php on line 21

      Warning: Cannot modify header information - headers already sent by (output started at /users/whice/www/cp/pages/index.php:20) in /users/whice/www/cp/pages/index.php on line 22

      Sind die Zeilen:

      Quellcode: index.php

      1. $_SESSION['USERNAME'] = $obj->Username;
      2. $_SESSION['PASSWORD'] = $obj->Password;
      3. header('Location: index.php?p=account');
      Du musst auch auf die Groß- und Kleinschreibung achten. Sind die Feldnamen in deiner Datenbankstruktur für den Spielernamen auch Username und für das Passwort Password?
      Das musst du anpassen.
    • Hey. Ich komme mit dem Sprachsystem zwar soweit klar, jedoch hab ich leider keinen Schimmer, wie ich diese als Nutzer der Seite umstellen kann.

      Im HowTo steht jetzt folgender Code:

      PHP-Quellcode

      1. $lang = 'en';
      2. if($this->language->exists($lang)) {
      3. $_SESSION['LANGUAGE'] = strtoupper($lang);
      4. $this->language->setLanguage($lang);
      5. }

      Nun meine Frage:
      Wie kann ich diese Funktion am besten in das Menü einbauen?

      HTML-Quellcode

      1. <li class="dropdown">
      2. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><img src="/img/<?php echo $this->language->getReplaced($this->language->json()['NAVI_LANG_IMG']); ?>" alt="FLAG"/> <span class="caret"></span></a>
      3. <ul class="dropdown-menu">
      4. <li><a href="#"><img src="/img/<?php echo $this->language->getReplaced($this->language->json()['NAVI_C_LANG_IMG']); ?>" alt="FLAG"/> <?php echo $this->language->getReplaced($this->language->json()['NAVI_CHANGE_LANG']); ?></a></li>
      5. </ul>
      6. </li>
      (Funktion sollte im unterem href stecken, nur wüsste selbst nicht wie)


      Würde mich freuen, wenn mir wer bei dem Problemchen behilflich sein könnte. :)
      Du bist auf der Suche nach einem günstigen und zuverlässigen Hoster? - Dann empfehle ich dir aus tiefstem Herzen Signaltransmitter!
      Preisgünstige Angebote, darunter Domains, root- & vServer (HDD & SSD), SSL-Zertifikate, CS:GO Gameserver, Webspacepakete zu unschlagbaren Preisen und vieles mehr!
    • Ray_Johnson schrieb:

      Hey. Ich komme mit dem Sprachsystem zwar soweit klar, jedoch hab ich leider keinen Schimmer, wie ich diese als Nutzer der Seite umstellen kann.

      Im HowTo steht jetzt folgender Code:

      PHP-Quellcode

      1. $lang = 'en';
      2. if($this->language->exists($lang)) {
      3. $_SESSION['LANGUAGE'] = strtoupper($lang);
      4. $this->language->setLanguage($lang);
      5. }
      Nun meine Frage:
      Wie kann ich diese Funktion am besten in das Menü einbauen?

      HTML-Quellcode

      1. <li class="dropdown">
      2. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><img src="/img/<?php echo $this->language->getReplaced($this->language->json()['NAVI_LANG_IMG']); ?>" alt="FLAG"/> <span class="caret"></span></a>
      3. <ul class="dropdown-menu">
      4. <li><a href="#"><img src="/img/<?php echo $this->language->getReplaced($this->language->json()['NAVI_C_LANG_IMG']); ?>" alt="FLAG"/> <?php echo $this->language->getReplaced($this->language->json()['NAVI_CHANGE_LANG']); ?></a></li>
      5. </ul>
      6. </li>
      (Funktion sollte im unterem href stecken, nur wüsste selbst nicht wie)


      Würde mich freuen, wenn mir wer bei dem Problemchen behilflich sein könnte. :)
      Am einfachsten kannst du es dir so machen, dass du eine neue Seite erstellst bspw. language.php und dem per Parameter (language.php?lang=en) die Sprache übermittelst und es dann in eine Session speicherst.

    • MnX schrieb:

      Ist der UCP Link noch irgendwo enthalten der , der oben steht funktioniert nicht irgendwie klappt das bei mir nicht so xD
      Du kannst dir das Tutorial durchlesen, wäre doch viel praktischer :D
    • C3O schrieb:

      MnX schrieb:

      Ist der UCP Link noch irgendwo enthalten der , der oben steht funktioniert nicht irgendwie klappt das bei mir nicht so xD
      Du kannst dir das Tutorial durchlesen, wäre doch viel praktischer :D
      Ja hab ich so ist es ja nicht nur irgendwie kommen immer fehler raus das ACCES ganze zeit schon definiert ist etc.
      obwohl es nicht so ist oder das die Klasse Page nicht geladen werden kann
    • MnX schrieb:

      C3O schrieb:

      MnX schrieb:

      Ist der UCP Link noch irgendwo enthalten der , der oben steht funktioniert nicht irgendwie klappt das bei mir nicht so xD
      Du kannst dir das Tutorial durchlesen, wäre doch viel praktischer :D
      Ja hab ich so ist es ja nicht nur irgendwie kommen immer fehler raus das ACCES ganze zeit schon definiert ist etc.obwohl es nicht so ist oder das die Klasse Page nicht geladen werden kann
      Poste hier die Fehler, dann helfe ich auch gerne :)

      Beitrag von datgame ()

      Dieser Beitrag wurde von shoxinat0r gelöscht ().

      Beitrag von MnX ()

      Dieser Beitrag wurde von shoxinat0r aus folgendem Grund gelöscht: Bezug entfernt ().