Jump to content

Building a class


corillo181

Recommended Posts

hey i'm building a class for a upload form and i want to know whats the best way to handle error in a class,

like if someone enters a bad email or a bad password whats the best way to stop the class from keep going

 

<?php
class singUp{

    private $email;
    private $password;
    private $password2;

function __construct($email,$password,$password2){
 $this->email = $email;
 $this->password = $password;
 $this->password2 = $password2;
}

function checkEmail(){	 
 $check="^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})";
  if(!eregi($check,$this->email)){ 
	return "Please check your email";
}	

function checkPassword(){
 if(($this->password || $this->password2)==''){
  return "passwords empty";

 }elseif($this->password != $this->password2){
  return "passwords do not match";
  
  }elseif(strlen($this->password)<6){
   return "Sorry your password is too short";
    }
   }
}
}

if(isset($_POST['Submit'])){

$singup =new singUp($_POST['email'],$_POST['password'],$_POST['password2']); 

echo $singup->checkEmail();
echo $singup->checkPassword();
}

?>

Link to comment
https://forums.phpfreaks.com/topic/66117-building-a-class/
Share on other sites

how about this ?

 

sorry for formatting  (edited direct)

 

<?php
class singUp{

    private $email;
    private $password;
    private $password2;
    var $errors = array();

function __construct($email,$password,$password2){
 $this->email = $email;
 $this->password = $password;
 $this->password2 = $password2;
}

function checkEmail(){	 
 $check="^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})";
  if(!eregi($check,$this->email)){ 
	$errors[] = "Please check your email";
	return false;
	}
}	

function checkPassword(){
 if(($this->password || $this->password2)=='')
 {
  $errors[] = "passwords empty";
return false;

 }elseif($this->password != $this->password2){
  $errors[] = "passwords do not match";
return false;  
  }elseif(strlen($this->password)<6){
   $errors[] = "Sorry your password is too short";
return false;
    }
   }
}
}

if(isset($_POST['Submit'])){

$singup =new singUp($_POST['email'],$_POST['password'],$_POST['password2']); 

$X = $singup->checkEmail();
//X= isemail valid
$X =$singup->checkPassword();
//X= password valid

//Show Errors
print_r($singup->errors);


}

?>

Link to comment
https://forums.phpfreaks.com/topic/66117-building-a-class/#findComment-331025
Share on other sites

but the array comes up empty.

 

but i made some modification thanx to your code less code same work.

 

<?php
class singUp{

    private $email;
    private $password;
    private $password2;
private $error;
public function __construct($email,$password,$password2){
 $this->email = $email;
 $this->password = addslashes(htmlspecialchars($password));
 $this->password2 = addslashes(htmlspecialchars($password2));
}

public function checkEmail(){	 
 $check="^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})";
  if(!eregi($check,$this->email)){ 
	$this->error.="Please check your email<br />";
return false;		
  }
}

public function checkPassword(){
 if(($this->password || $this->password2)==''){
  $this->error.="passwords empty<br />";
return false;

 }elseif($this->password != $this->password2){
  $this->error.="passwords do not match<br />";
return false;

  }elseif(strlen($this->password)<6){
   $this->error.="Sorry your password is too short<br />";
return false;
   }
  }
   
 public function errorMessage(){
 return $this->error;
 }
}

if(isset($_POST['Submit'])){

$singup =new singUp($_POST['email'],$_POST['password'],$_POST['password2']); 

echo $singup->checkEmail();
echo $singup->checkPassword();
echo $singup->errorMessage();
}

?>

Link to comment
https://forums.phpfreaks.com/topic/66117-building-a-class/#findComment-331054
Share on other sites

any one knows why this code is not working i get

Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\include\db.php on line 44

 

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\wamp\www\include\db.php on line 44

 

but if i put the code simple with out a class it does work.

<?php
class DB{
 private $user;
 private $pass;
 private $host;
 private $database;
 public $error= array();

  public function __construct($username,$password,$host){
	 $this->user = $username;
 $this->pass = $password;
 $this->host = $host;
 $this->database = $database;

}

  public function DBconnect(){
  $connection = mysql_connect($this->host,$this->user,$this->pass)or die(mysql_error());

  if(!$connection){
  $this->error[]=$connection;
   }
}

public function DBselect($database){ 
  $this->database=$database;
     if (!mysql_select_db($this->database)) {
echo 'Selection of database: '.$this->database.' failed.';
return false;
      }
}
  
public function errorMess(){
  foreach($this->error as $E){
 echo $E.'<br />';
  }
}
}

$db=new DB('username','password','localhost');
$db->DBselect('test_com');

$query = "SELECT username FROM tra_users";
mysql_query($query);
?>

Link to comment
https://forums.phpfreaks.com/topic/66117-building-a-class/#findComment-331453
Share on other sites

my last question with this class is how do i make the query execute if there is no error there current method i'm using execute the curry no matter if there are errors.


<?php
include_once($_SERVER['DOCUMENT_ROOT'].'/include/header.php');
class singUp{

    static private $email;
    static private $password;
    static private $password2;
static public $error = array();

public function __construct($email,$password,$password2){
 $this->email = $email;
 $this->password = $password;
 $this->password2 = $password2;

}

// EMAIL CHECK	
public function checkEmail(){	 
 $check="^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})";
 $checkemail=mysql_query("SELECT email FROM tra_users WHERE email='$this->email'")or die(mysql_error());
 $countemail=mysql_num_rows($checkemail);
 if(empty($this->email)){
  $this->error['email']="You did not enter a email";
return false;
}elseif($countemail>0){
 $this->error['email']="Sorry that email is already in use*";
return false;
 }elseif(!eregi($check,$this->email)){ 
	$this->error['email']="Please check your email";
return false;		
  }else{
   return $this->email;
  }
}

//PASSWORD CHECK	
public function checkPassword(){
 if(($this->password=='' || $this->password2)==''){
  $this->error['password']="passwords empty";
return false;

 }elseif($this->password != $this->password2){
  $this->error['password']="passwords do not match";
return false;

  }elseif(strlen($this->password)<6 && strlen($this->password2)<6){
   $this->error['password']="Sorry your password is too short";
return false;
   }else{
   return $this->password;
   }
  }
  
//ERROR MASSAGE HANDLE
 public function errorMessage(){
  if(!empty($this->error)){
 foreach($this->error as $E){
 echo $E.'<br />';
   }
  }
 }

// WORKING ON EMAIL	 
 public function email(){
  $sent=mail($this->email,$subject,$mess,$header);

 }

//GENERATE CODE FOR ACTIVATION CHECK	 
 public function getCode(){
  $rand = mt_rand(0, 32);
      $code = md5($rand . time());
	return $code;
 }

//COUNTS HOW MANY ERROR IN THE CODE
 public function errorCount(){
  return count($this->error);
  } 
  
}

if(isset($_POST['Submit'])){

$singup =new singUp($_POST['email'],$_POST['password'],$_POST['password2']); 

$email =$singup->checkEmail();
$password =$singup->checkPassword();
$code = $singup->getCode();


// NEED HELP MAKE THIS PART OF MY CODE WORK
if(!$singup->errorCount()==0){

$query = "INSERT INTO tra_users(password,email,code,signed_up)VALUES('$password','$email','$code',now())";
echo $db->query($query);
}
}

?>

Link to comment
https://forums.phpfreaks.com/topic/66117-building-a-class/#findComment-332246
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.