Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ช่วยแก้ไข code หน่อยคับมันขึ้น Using $this when not in object context



 

ช่วยแก้ไข code หน่อยคับมันขึ้น Using $this when not in object context

 



Topic : 089996



โพสกระทู้ ( 336 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์




ถ้ากด submit มันก็จะขึ้นข้อความว่า data

Code (PHP)
       if(!$this->isDataValid())
        throw new exception ('data');


Code (PHP)
<?php
class Login
{
    private $_id;
    private $_username;
    private $_password;
    private $_passmd5;
    
    private $_errors;
    private $_access;
    private $_login;
    private $_token;
    
    public function __construct()
    {
        $this->_errors = array();
        $this->_login = isset($_POST['login']) ? 1 : 0;
        $this->_access = 0;
        $this->_token = $_POST['token'];
        
        $this->_id = 0;
        $this->_username = ($this->_login) ? $this->filter($_POST['username']) : $_SESSION['username'];
        $this->_password = ($this->_login) ? $this->filter($_POST['password']) : '';
        $this->_passmd5 = ($this->_login) ? md5($this->_password) : $_SESSION['password'];
    }
    
    public function isLoggedIn()
    {
      ($this->_login) ? $this->verifypost() : $this->verifySession();
      return $this->_access; 
    }
    public function filter($var)
    {
     return preg_replace('/[^a-zA-Z0-9]/','',$var);  
    }
    public function verifypost()
    {
     try
     {
        if(!$this->isTokenValid())
            throw new exception ('Submit');
            
        if(!$this->isDataValid())
        throw new exception ('data');
        
        if(!$this->verifyDatabase())
        throw new exception ('username / password');
        
        $this->_access = 1;
        $this->signupSession();
     }
     catch(exception $e)
     {
      $this->_errors[] = $e->getMessage();  
     }   
    }
    public function verifySession()
    {
     if($this->sesstionExist() && $this->verifyDatabase())
     $this->_access = 1;   
    }
    public function verifyDatabase()
    {
        mysql_connect("localhost", "rosot", "1234") or die (mysql_error());
        mysql_select_db("payment") or die (mysql_error());
        
        $data = mysql_query("SELECT *  FROM `account` WHERE username = '($this->_username)' AND password = '($this->_passmd5)'");
        mysql_query($data) or die (mysql_error());
    }
    public function isDataValid()
    {
        return(preg_match('/^[a-zA-Z0-9]{5,12}%/',$this->_username) && preg_match('/^[a-zA-Z0-9]{5,12}%/',$this->_password))? 1 : 0 ;
    }
    public function isTokenValid()
    {
        return(!isset($_SESSION['token']) || $this->_token != $_SESSION['token']) ? 0 : 1;
    }
    public function signupSession()
    {
        $_SESSION['user_id'] = $this->_id;
        $_SESSION['username'] = $this->_username;
        $_SESSION['password'] = $this->_passmd5;
    }
    public function sesstionExist()
    {
        return (isset($_SESSION['username']) && isset($_SESSION['password']))? 1 : 0 ;
    }
    public function showErrors()
    {
    echo "<h3>Errors</h3>";
    
    foreach($this->_errors as $key=>$value)
    echo $value."<br>";    
    }
}
?>




Tag : PHP









ประวัติการแก้ไข
2013-01-29 21:20:31
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-01-29 21:19:42 By : nukedonut1 View : 1029 Reply : 2
 

 

No. 1



โพสกระทู้ ( 1,439 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

error ที่ขึ้น $this .. ไม่น่าจะเป็นไปได้นะครับ syntax ก็ไม่ผิดนะ แต่ที่ขึ้นคำว่า data ลองเช็คเงื่อนไขที่กรอกยังครับ

Code (PHP)
return(preg_match('/^[a-zA-Z0-9]{5,12}%/',$this->_username) && preg_match('/^[a-zA-Z0-9]{5,12}%/',$this->_password))? 1 : 0 ;


เงื่อนบังคับให้ใช้
username ต้องประกอบด้วย a-z,A-Z หรือ 0-9 และต้องประกอบด้วย 5-12 ตัวอักษร
password เงื่อนไขเหมือน username






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-01-29 22:19:56 By : xbeginner01
 


 

No. 2



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ตรงนี้อ่ะครับ

Code (PHP)
if(!$this->isDataValid())
 throw new exception ('data');


เรียกใช้จากตรงไหน
ถ้าไม่ได้เป็นโค้ดที่อยู่ใน class และไม่ได้อยู่ใน function ที่เป็น method (ไม่ใช่ static function) มันก็จะขึ้น error แบบนั้นล่ะครับ
error ก็บอกความหมายตรงตัวเลย
คือคุณใช้ $this ณ จุดที่ใช้มันไม่ได้ (not in object context)

โค้ด class Login ที่คุณให้มาไม่ได้ทำให้เกิด error ดังกล่าวเลยครับ แต่เป็นโค้ดบนสุดครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-01-30 05:50:17 By : cookiephp
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ช่วยแก้ไข code หน่อยคับมันขึ้น Using $this when not in object context
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่