Hláška se nevypisuje – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Hláška se nevypisuje – PHP – Fórum – Programujte.comHláška se nevypisuje – PHP – Fórum – Programujte.com

 

Yohaku0
Návštěvník
25. 8. 2012   #1
-
0
-

Dobrý den,

omlouvám se, že zase obtěžuji, ale vyskytl se další problém. Už to řeším asi dva dny a nic... 

V souboru interface.php mám třídu Main, ve které jsou tyto datový členi:

  private $host = "localhost";
  private $user = "root";
  private $password = "";
  private $database = 'yohaku';
  public $msg = "";

Potom tam jsou metody:

private $info = array(
    'Server je nyní offline. Zřejmě probíhá údržba serveru.',
    'Špatné jméno nebo heslo.',
    'Byl(a) jsi přihlášen.',
    'Byl(a) jsi odhlášen.'
    );
private function dbConfig(){//obsah}
private function login(){//obsah}

private function logout(){
session_destroy();
    $this->msg=$info[3];
    echo "<meta http-equiv=\"refresh\" content=\"2; index.php\" />";
}
private function htmlLogin(){//obsah}
private function __construct(){
//obsah
echo $this->msg;//obsah
}

V druhém souboru (logout.php), mám:

<?php
require 'interface.php';
$main=new Main;
$main->logout();
?>

Jak jste si určitě povšimli, ve veřejné metodě logout je řádek $this->msg=$info[3]; . A v konstruktoru mám echo $this->msg. Ale přesto hláška $info['3'] nevypisuje...

Nahlásit jako SPAM
IP: 85.207.18.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
ZeByToBylTygr
~ Anonymní uživatel
1 příspěvek
25. 8. 2012   #2
-
0
-

$this->msg = $this->info[3]; ??

Nahlásit jako SPAM
IP: 213.226.205.–
Yohaku0
Návštěvník
25. 8. 2012   #3
-
0
-

To mě také napadlo, ale je tam stejný výsledek.

Nahlásit jako SPAM
IP: 85.207.18.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
liborb
~ Redaktor
+18
Guru
25. 8. 2012   #4
-
0
-

Konstruktor se provede při vytvoření instance. Tam je msg prázdná, takže se nic nevypíše. No a pak teprve tu msg nastavíš. Možná si ji chtěl v konstruktoru nastavovat a v té metodě vypisovat.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.211.–
Yohaku0
Návštěvník
25. 8. 2012   #5
-
0
-

Konstruktor se provede při vytvoření instance. Tam je msg prázdná, takže se nic nevypíše. No a pak teprve tu msg nastavíš. Možná si ji chtěl v konstruktoru nastavovat a v té metodě vypisovat.

Dobrá, řekněme, že máte pravdu. Ale proč se potom hláška vypíše při přihlášení?

  private function login() {
    if(isset($_POST['username'])) {
      if(isset($_POST['userpass']) && isset($_POST['username'])) {
        $userpass = mysql_real_escape_string(htmlspecialchars($_POST['userpass']));
        $username = mysql_real_escape_string(htmlspecialchars($_POST['username']));
        $query001 = mysql_query('select * from users where userpass="'.hash('sha1',$userpass).'" and username="'.$username.'"');
        $result001 = mysql_fetch_array($query001);
        if(isset($result001['iduser'])) {
          $this->msg = $this->info[2];
          $_SESSION['iduser'] = $result001['iduser'];
        } else {
          $this->msg = $this->info[1];
        }                
      } else {
        echo "Musíš vyplnit všechny údaje.";
      }
    }
  }
Nahlásit jako SPAM
IP: 85.207.18.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
Yohaku0
Návštěvník
25. 8. 2012   #6
-
0
-

Asi budu muset udělat jednotlivé stránky do formátu URL "index.php?page=logout", a v konstruktoru vyvolat metodu s podmínkou (jestliže má $_GET['page'] hodnotu "logout") ještě předtím, než se vypíše $msg.

Nahlásit jako SPAM
IP: 85.207.18.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
Yohaku0
Návštěvník
25. 8. 2012   #7
-
0
-

   

    $page=htmlspecialchars(strip_tags($_GET['page']));
    if(isset($_GET['page'])) {
      if(file_exists($page.".php")) {
        require $page.".php";
      } else {
        require "404.php";
      }
    } else {
      require "homepage.php";
    }
Nahlásit jako SPAM
IP: 85.207.18.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
liborb
~ Redaktor
+18
Guru
25. 8. 2012   #8
-
0
-

A jen tak mimochodem, která hláška se ti vypíše při loginu?

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.208.–
Yohaku0
Návštěvník
25. 8. 2012   #9
-
0
-

Byl(a) jsi přihlášen, samozřejmě. Tedy hodnota pole $info[2].

Nahlásit jako SPAM
IP: 85.207.18.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
liborb
~ Redaktor
+18
Guru
25. 8. 2012   #10
-
0
-

Teď koukám, že tu máš ještě jedno vlákno (vypršení session), kde vidím, že volání login máš taky v konstruktoru a pak tam máš tři tečky, tj. tam bude asi to echo, že? Pokud ano, tak tím se to vysvětluje :). A tak či tak, smyslem OOP není všechno nacpat do konstruktoru ;).

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.208.–
Yohaku0
Návštěvník
25. 8. 2012   #11
-
0
-

#10 liborb
Ano to máš pravdu... Před měsícem jsem doopravdy vše v konstruktoru měl, ale postupně  vyndávám části, a dělám z nich samostatné funkce nebo soubory. Na tomto projektu se vlastě učím OOP.

Nahlásit jako SPAM
IP: 85.207.18.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
liborb
~ Redaktor
+18
Guru
25. 8. 2012   #12
-
0
-

OOP je hlavně o jiném stylu myšlení. Tak se nenech odradit případnými neúspěchy, vydrž, ten vyšší level stojí to za to ;).

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.210.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Chybová hláška — založil WoSSa

Chybová hláška — založil Montezo

Python Hláška — založil David

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý