[英]check if name exists in database before adding using controller function php
[英]Adding a check to php function?
我有如下基本功能:
function buy()
{
$item_id = ( int )$this->uri->segment( 3 );
if ( $item_id > '0' )
{
$item = $this->db->where( 'shop_id', $item_id )->get( 'shop' )->row();
if ( $item )
{
$player = $this->user->info( $this->user->id() );
if ( $player->users_money >= $item->shop_req_money && $player->users_credits >= $item->shop_req_credits)
{
$this->db->update( 'users_items', array( 'users_id' => $this->user->id(), 'users_motors_id' => '0' ), array( 'users_items_id' => $item->users_items_id ) );
$this->db->update( 'users', array( 'users_money' => $player->users_money - $item->shop_req_money, 'users_credits' => $player->users_credits - $item->shop_req_credits ), array( 'users_id' => $this->user->id() ) );
$this->db->query( 'UPDATE users SET users_money=users_money+' . $item->shop_req_money . ', users_credits=users_credits+' . $item->shop_req_credits . ' WHERE users_id=' . $this->db->escape( $item->shop_users_id ) );
$this->db->delete( 'shop', array( 'shop_id' => $item->shop_id ) );
$this->session->set_flashdata( 'success', true );
}
else
$this->session->set_flashdata( 'error', true );
}
}
header( 'Location: ' . $_SERVER['HTTP_REFERER'] );
}
并且我像这样编辑它,以添加其他检查,如果reg ip与另一个不同,并设置一个错误消息。
function buy()
{
$item_id = ( int )$this->uri->segment( 3 );
if ( $item_id > '0' )
{
$item = $this->db->where( 'shop_id', $item_id )->get( 'shop' )->row();
if ( $item )
{
$player = $this->user->info( $this->user->id() );
$players = $this->user->info( $item->shop_users_id );
if ( $players->users_reg_ip === $player->users_reg_ip )
{
$this->session->set_flashdata( 'errorip', true );
}
elseif ( $player->users_money >= $item->shop_req_money && $player->users_credits >= $item->shop_req_credits)
{
$this->db->update( 'users_items', array( 'users_id' => $this->user->id(), 'users_motors_id' => '0' ), array( 'users_items_id' => $item->users_items_id ) );
$this->db->update( 'users', array( 'users_money' => $player->users_money - $item->shop_req_money, 'users_credits' => $player->users_credits - $item->shop_req_credits ), array( 'users_id' => $this->user->id() ) );
$this->db->query( 'UPDATE users SET users_money=users_money+' . $item->shop_req_money . ', users_credits=users_credits+' . $item->shop_req_credits . ' WHERE users_id=' . $this->db->escape( $item->shop_users_id ) );
$this->db->delete( 'shop', array( 'shop_id' => $item->shop_id ) );
$this->session->set_flashdata( 'success', true );
}
else
$this->session->set_flashdata( 'error', true );
}
}
header( 'Location: ' . $_SERVER['HTTP_REFERER'] );
}
它的工作方式基本上是这样,但我基本上是在问这是否是正确的方法,还是应该有其他类似的方法但可以做得更好? 如果对我的问题有任何评论,将不胜感激。 提前致谢!
是的,您可以将其包括在条件块中。 像这样:
if ( $players->users_reg_ip === $player->users_reg_ip) {
// trying to buy from the same IP
$this->session->set_flashdata( 'errorip', true );
}
elseif ( $player->users_money < $item->shop_req_money && $player->users_credits < $item->shop_req_credits) {
// if user has not enough money and user credits is less than shop requirement credits
// or maybe you mean OR ||
$this->session->set_flashdata( 'error', true );
}
else {
$this->db->update('users_items',
array( 'users_id' => $this->user->id(), 'users_motors_id' => '0' ),
array( 'users_items_id' => $item->users_items_id )
);
$this->db->update( 'users',
array( 'users_money' => $player->users_money - $item->shop_req_money,
'users_credits' => $player->users_credits - $item->shop_req_credits
),
array( 'users_id' => $this->user->id() )
);
$this->db->query( 'UPDATE users SET users_money=users_money+' . $item->shop_req_money . ', users_credits=users_credits+' . $item->shop_req_credits . ' WHERE users_id=' . $this->db-> escape( $item->shop_users_id ) );
$this->db->delete( 'shop', array( 'shop_id' => $item->shop_id ) );
$this->session->set_flashdata( 'success', true );
}
// instead of using referrer why not
// redirect('controller/method'); ?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.