Ich verwende CodeIgniter auf meiner Instagram-Mitgliedsseite.# 1062 - Doppelter Eintrag für Schlüssel PRIMARY
Wenn ich versuche, für das erste Mal in meiner Seite einzuloggen es die id in Datenbank einfügen, aber wenn ich abzumelden und meine Session löschen, und versuchen Sie es erneut einzuloggen, bekomme ich einen Fehler:
internal server error
Das ist mein Protokollfehler in CodeIgniter:
INFO - 2016-12-21 20:47:00 --> Model Class Initialized
DEBUG - 2016-12-21 20:47:00 --> Curl class already loaded. Second attempt ignored.
ERROR - 2016-12-21 20:47:00 --> Query error: Duplicate entry '1962377392' for key 'PRIMARY' - Invalid query: INSERT INTO `instagram` (`id`, `cookies`, `useragent`, `device_id`, `poin`, `username`, `password`) VALUES (1962377392, 'ds_user_id=1962377392; expires=Tue, 21-Mar-2017 13:47:00 GMT; Max-Age=7776000;csrftoken=F2Fp1QNOuUgHiI5CViajxBIGbsMtQtVe; expires=Wed, 20-Dec-2017 13:47:00 GMT; Max-Age=31449600; Path=/;mid=WFqH1AABAAF38OrHQZq5zamd0q2_; expires=Tue, 16-Dec-2036 13:47:00 GMT; Max-Age=630720000;ds_user=akuuntukkamu; expires=Tue, 21-Mar-2017 13:47:00 GMT; Max-Age=7776000;sessionid=IGSCdf7135cf1f12077c510f35ec09282c3dd788e2f4ff528f853ac568decaac3a8e%3AYyOpVdd67K5vajF2sNgjdfiktjX0M4Lg%3A%7B%22_auth_user_id%22%3A1962377392%2C%22_platform%22%3A1%2C%22_auth_user_hash%22%3A%22%22%2C%22asns%22%3A%7B%22108.168.197.83%22%3A36351%2C%22time%22%3A1482328020%7D%2C%22last_refreshed%22%3A1482328020.533396%2C%22_token_ver%22%3A2%2C%22_token%22%3A%221962377392%3AZWU6rOTIIcRFVtSxnaRcW9veaG9fxO2g%3A22f0a849d9858c559db32062a4b4aa0d59a965213f4c4a182ea63256ef32b2a9%22%2C%22_auth_user_backend%22%3A%22accounts.backends.CaseInsensitiveModelBackend%22%7D; expires=Tue, 21-Mar-2017 13:47:00 GMT; HttpOnly; Max-Age=7776000; Path=/;', 'Instagram 6.22.0 Android (11/1.5.3; 240; 480x800; samsung; SM-N9000; SM-N9000; smdkc210; en_US)', 'android-51b39181ee53eec9', 4, 'myinstagramusername', 'myinstagrampassword')
INFO - 2016-12-21 20:47:00 --> Language file loaded: language/english/db_lang.php
und das ist mein Login-Formular und ajax:
<?=form_open('users/login', array('class' => 'form-horizontal','id' => 'loginform'))?>
<div id="salsakp" class="input-group col-sm-12"></div>
<div style="margin-bottom: 20px" class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<?=form_input(array('id' => 'username', 'name' => 'username', 'type' => 'text', 'class' => 'form-control', 'placeholder' => 'Username Anda', 'required' => 'required'))?>
</div>
<div style="margin-bottom: 20px" class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
<?=form_password(array('id' => 'password', 'name' => 'password', 'class' => 'form-control', 'placeholder' => 'Kata Sandi', 'required' => 'required'))?>
</div>
<div style="margin-top:30px" class="form-group">
<div class="col-sm-12 controls">
<button id="btn-login" type="submit" href="#" class="form-control btn btn-info">Masuk</button>
</div>
</div>
<?=form_close()?>
<script>
$(document).ready(function() {
$('#username').focus();
$("form#loginform").submit(function() {
if ($('#username').val().length > 3 || $('#password').val.length > 3) {
var pdata = $(this).serialize();
var purl = $(this).attr('action');
$.ajax({
url: purl,
data: pdata,
timeout: false,
type: 'POST',
dataType: 'JSON',
success: function(hasil) {
$("input").removeAttr("disabled", "disabled");
$("button").removeAttr("disabled", "disabled");
$("#btn-login").html('Masuk');
if (hasil.result) {
window.location.replace(hasil.redirect);
$("#salsakp").html('<div class="alert alert-success" role="alert">Berhasil Login, Anda akan dialihkan..</div>')
} else $("#salsakp").html('<div class="alert alert-warning" role="alert">' + hasil.content + '</div>')
},
error: function(a, b, c) {
$("input").removeAttr("disabled", "disabled");
$("button").removeAttr("disabled", "disabled");
$("#btn-login").html('Masuk');
$("#salsakp").html('<div class="alert alert-warning" role="alert">' + c + '</div>')
},
beforeSend: function() {
$("input").attr("disabled", "disabled");
$("#btn-login").html('Loading..');
$("#salsakp").html('');
$("button").attr("disabled", "disabled")
}
})
}
return false
})
});
</script>
Und das ist meine Login-Funktion
public function login(){
if(!$this->session->userdata('credentials')):
if(!$this->input->post('username')||!$this->input->post('password')) $ret = json_encode(array('result' => 0, 'content' => 'DSMOS has arrived')); else{
$this->load->library('curl');
$get = $this->curl->simple_get('https://www.instagram.com/'.trim($this->input->post('username')).'/');
if($this->curl->info['http_code']<>200) $ret = json_encode(array('result' => 0, 'content' => 'Username/Password salah..')); else{
preg_match('#, "id": "(.*?)", "biography"#',$get,$id);
$this->load->model('instaloader');
if ($this->db->get_where('instagram', array('id' => $id[1]))->num_rows() > 0):
$rows = $this->db->get_where('instagram', array('id' => $id[1]))->row();
$proccess = $this->instaloader->proccess($rows->useragent, 'accounts/login/', 0, $this->instaloader->hook('{"device_id":"'.$rows->device_id.'","guid":"'.$this->instaloader->guid(1).'","username":"'.trim($this->input->post('username')).'","password":"'.trim($this->input->post('password')).'","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}'));
$procc = json_decode($proccess[1]);
if($procc->status<>ok) $ret = json_encode(array('result' => 0, 'content' => 'Username/Password salah..')); else{
preg_match_all('#Set-Cookie: (.+);#',$proccess[0],$d);$cookie='';
for($o=0;$o<count($d[0]);$o++)$cookie.=$d[1][$o].";";
$this->db->where('id', $procc->logged_in_user->pk)->update('instagram', array('cookies' => $cookie, 'username' => $procc->logged_in_user->username, 'password' => trim($this->input->post('password'))));
$ret = json_encode(array('result' => 1, 'redirect' => base_url()));
$this->session->set_userdata('credentials', array('device_id' => $rows->device_id, 'useragent' => $rows->useragent, 'user_id' => $procc->logged_in_user->pk, 'cookie' => $cookie));
}
else:
$this->load->model('instaloader');
$dev_id = $this->instaloader->device_id();
$user_agent = $this->instaloader->useragent();
$proccess = $this->instaloader->proccess($user_agent, 'accounts/login/', 0, $this->instaloader->hook('{"device_id":"'.$dev_id.'","guid":"'.$this->instaloader->guid(1).'","username":"'.trim($this->input->post('username')).'","password":"'.trim($this->input->post('password')).'","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}'));
$procc = json_decode($proccess[1]);
if($procc->status<>ok) $ret = json_encode(array('result' => 0, 'content' => 'Username/Password salah..')); else{
preg_match_all('#Set-Cookie: (.+);#',$proccess[0],$d);$cookie='';
for($o=0;$o<count($d[0]);$o++)$cookie.=$d[1][$o].";";
$this->db->insert('instagram', array('id' => $procc->logged_in_user->pk, 'cookies' => $cookie, 'useragent' => $user_agent, 'device_id' => $dev_id, 'poin' => 4, 'username' => $procc->logged_in_user->username, 'password' => trim($this->input->post('password'))));
$ret = json_encode(array('result' => 1, 'redirect' => base_url(), 'content' => 'Berhasil Login,Anda akan dialihkan..'));
$this->session->set_userdata('credentials', array('device_id' => $dev_id, 'useragent' => $user_agent, 'user_id' => $procc->logged_in_user->pk, 'cookie' => $cookie)); }
endif;
}
}
$this->output
->set_content_type('application/json')
->set_output($ret);
else:
redirect(base_url());
endif;
}
So, wie die Abfrage nicht dupliziert zu machen?
http://prntscr.com/dmpwlh bereits – mieburungdara