ホームページ >バックエンド開発 >PHPチュートリアル >初心者は、PHP で模擬ログインを実行し、Web ページのコードに従って入力しますが、結果が表示されません。
これは、Web ページのプロンプトに従って PHP シミュレートされたログインのコードに従って変更されたログイン コードであり、オープンソース中国へのシミュレートされたログインです。
5805c710af24b31f1d54e8fd01932f81 '/my'、
'error_page' => => ; '1',
'submit' => '今すぐログイン'
);
//ログインアドレス
$url = "http://m.oschina.net/login"; Cookie 保存パス
$cookie = dirname(__FILE__) . '/cookie_oschina.txt'
//ログイン後に情報を取得するアドレス
$url2 = "http://m.oschina.net/my"; /模擬ログイン
login_post($url, $cookie, $post);
//ログインページ情報を取得
$content = get_content($url2, $cookie)
//Cookie ファイルを削除
@ unlink($cookie);
// 一致するページ情報
$preg = "/00d0427fa05126f0188ee1811fa9db82(.*)b90dd5946f0946207856a8a37f441edf/i";
preg_match_all($preg, $content, $arr); str = $ arr [1] [0]。 。
Baidu は 50 行目のエラーを報告して修正しましたが、
$str=$arr[1]; に変更しました
配列から文字列への変換というエラー メッセージが表示されました
エラー メッセージに従って、var_dump($ arr);
次に、次のように表示されます:
array(2) { [0]=> array(0) { } [1]=> array(0) { } }
模擬ログインを実装したいので、答えを教えてください。ありがとうございます。
ディスカッションへの返信 (解決策)
http リクエストを理解する代わりに、ログインをシミュレートするためにインターネット上でカールを見つけてください
パケットをキャプチャして見てみてはいかがでしょうか?クリアテキストのパスワードを直接使用してログインしますか?
OSC はログインするためのアカウントとパスワードを送信するために sha1 暗号化を使用します
私はあなたにメッセージを書きました。私の表現を無駄にします
<?php$cookie_file = dirname(__FILE__).'/cookie.txt';$rs=login('邮件地址','密码',$cookie_file);if($rs){ $rs=json_decode($rs,true); exit($rs['msg']);}else{ echo '<span style="color:red;">登陆成功</span>';}echo "<br>";echo "<hr>";echo getIndex($cookie_file);//输出OSC首页function login($user,$pwd,$cookie_file){ $post='email='.urlencode($user).'&pwd='.sha1($pwd).'&verifyCode=&save_login=1'; // 初始化 $curl = curl_init('http://www.oschina.net/action/user/hash_login'); $header = array(); $header[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'; curl_setopt($curl, CURLOPT_HTTPHEADER, $header); // 不输出header头信息 curl_setopt($curl, CURLOPT_HEADER, 0); // 保存到字符串而不是输出 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file); //存储cookies // post数据 curl_setopt($curl, CURLOPT_POST, 1); // 请求数据 curl_setopt($curl, CURLOPT_POSTFIELDS, $post); // 是否抓取跳转后的页面 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); $response = curl_exec($curl); curl_close($curl); return $response;}function getIndex($cookie_file){ // 初始化 $curl = curl_init('http://www.oschina.net'); $header = array(); $header[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'; //$header[] = 'Cookie: tc=AQAAAOaUCR/QXw4AwxXKeMgqcfroqWeb; oscid=PwzzXphS9GBIcX5pQFukpai0W0vxPrG4zeASFKTqkhgqGAHYCQekA%2FptCnh127%2BP5immlCrhkQqiEriCja%2F4ov1i2XHq2D%2BP6Dn8L9pfVydrkxvpObEDaOsIy9RU4DtH'; curl_setopt($curl, CURLOPT_HTTPHEADER, $header); // 不输出header头信息 curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file); // 保存到字符串而不是输出 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 是否抓取跳转后的页面 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); $response = curl_exec($curl); curl_close($curl); return $response;}
パケットキャプチャデータを処理していたのに、私はそれに注意を払わなかったので、コードを書くのを手伝ってくれたモデレータに感謝します。視聴者は私を感謝し、崇拝しています。 。 。