wloleo
wloleo

Reputation: 2190

PHP: unserialize(): Error at offset 757 of 784 bytes

why does it return an "unserialize(): Error at offset 757 of 784 bytes" i was just adding permission to the serialized string in the database here is my string

database: permission row

Super Admin:

a:32:{i:0;s:10:"createUser";i:1;s:10:"updateUser";i:2;s:8:"viewUser";i:3;s:10:"deleteUser";i:4;s:11:"createGroup";i:5;s:11:"updateGroup";i:6;s:9:"viewGroup";i:7;s:11:"deleteGroup";i:8;s:11:"createStore";i:9;s:11:"updateStore";i:10;s:9:"viewStore";i:11;s:11:"deleteStore";i:12;s:11:"createTable";i:13;s:11:"updateTable";i:14;s:9:"viewTable";i:15;s:11:"deleteTable";i:16;s:14:"createCategory";i:17;s:14:"updateCategory";i:18;s:12:"viewCategory";i:19;s:14:"deleteCategory";i:20;s:13:"createProduct";i:21;s:13:"updateProduct";i:22;s:11:"viewProduct";i:23;s:13:"deleteProduct";i:24;s:11:"createOrder";i:25;s:11:"updateOrder";i:26;s:9:"viewOrder";i:27;s:11:"deleteOrder";i:28;s:10:"viewReport";i:29;s:13:"updateCompany";i:30;s:11:"viewProfile";i:31;s:13:"updateSetting";}

Cashier:

a:10:{i:0;s:8:"viewFile";i:1;s:9:"viewStore";i:2;s:11:"updateTable";i:3;s:9:"viewTable";i:4;s:11:"createOrder";i:5;s:11:"updateOrder";i:6;s:9:"viewOrder";i:7;s:11:"deleteOrder";i:8;s:10:"viewReport";i:9;s:11:"viewProfile";}

Manager:

a:20:{i:0;s:8:"viewFile";i:1;s:8:"viewUser";i:2;s:11:"createGroup";i:3;s:11:"updateGroup";i:4;s:9:"viewGroup";i:5;s:11:"deleteGroup";i:6;s:9:"viewStore";i:7;s:11:"createTable";i:8;s:11:"updateTable";i:9;s:9:"viewTable";i:10;s:11:"deleteTable";i:11;s:14:"updateCategory";i:12;s:13:"createProduct";i:13;s:13:"updateProduct";i:14;s:11:"viewProduct";i:15;s:13:"deleteProduct";i:16;s:9:"viewOrder";i:17;s:11:"deleteOrder";i:18;s:10:"viewReport";i:19;s:11:"viewProfile";}

My_controller.php:

$group_data = array();
if(empty($this->session->userdata('logged_in'))) {
    $session_data = array('logged_in' => FALSE);
    $this->session->set_userdata($session_data);
}
else {
    $user_id = $this->session->userdata('id');
    $this->load->model('model_groups');
    $group_data = $this->model_groups->getUserGroupByUserId($user_id);
    
    $this->data['user_permission'] = unserialize($group_data['permission']);

    $this->permission = unserialize($group_data['permission']);
}

as you can see there was an i:0;s:8:"viewFile"; in the cashier and the manager and in my web you cannot manipulate the super admin permission, so i try the manual in the localhost phpmyadmin i add the line "i:0;s:8:"viewFile";" just like in the cashier and manager and then i got the "unserialize(): Error at offset 757 of 784 bytes". what seems the error here and how can i manipulate the super admin permission.

Upvotes: 0

Views: 137

Answers (1)

RiggsFolly
RiggsFolly

Reputation: 94662

You also have to increment the array count at the beginning of the string from 32 to 33 because you are adding another occurance.

So the Super Admin started as

a:32:{i:0;s:10:"createUser"; . . . 

and when you add another occurance to the array you must increment 32 into 33

a:33:{i:0;s:8:"viewFile";i:0;s:10:"createUser"; . . . 

Upvotes: 1

Related Questions