• 締切済み

PHP PCでログインできたのに、スマホから無理

PCからは既存アカウントでログインできるのですが、スマホからログインできません。 もちろんスマホ用サイトにも同様のスクリプトを書いております。 PCでは、ブラウザ:Google Chrome スマホのOSは、Android4.3 です。 ログインスクリプトは下記のようなものです。ちなみにこのスクリプトはスマホ用の方です。 -------------------------------------------------------------------------------------------- <?php session_start(); //////////////////// // POST変数の取得 // //////////////////// $login_id = (isset($_POST['login_id']))? $_POST['login_id'] : ""; $password = (isset($_POST['password']))? $_POST['password'] : ""; /* var_dump($login_id); var_dump($password); exit; */ if($login_id!=="" and $password!==""){ //////////////////////// // データベースを検索 // //////////////////////// $con = mysql_connect("~", "~", "~"); mysql_select_db("LAA0471050-shopcart"); mysql_set_charset('utf8'); $sql = "SET NAMES utf-8"; mysql_query($sql); $sql = "SELECT * FROM member_profile;"; $result = mysql_query($sql, $con) or die(mysql_error()); $rowco = mysql_num_rows($result); for($i=0; $i<$rowco; $i++){ $row = mysql_fetch_row($result); // 取得された行に対応する配列を返し、内部のデータポインタを前に進める if($login_id===$row[4] && $password===$row[5]){ // IDとパスワードが両方一致していた場合 $_SESSION['login'] = 1; // ログイン状態にする // setcookie("id", $login_id, time()+60*60*24*365); // アカウント用のクッキーの有効期限は一年間 // setcookie("pass", $password, time()+60*60*24*365); $_SESSION['login_id'] = $login_id; // メールアドレス header("Location: mypage.php?login_id=$login_id"); }else{ // header("Location: login.php"); // echo 'error'; } } mysql_close($con); // データベースとの接続を解除する } ?> <!doctype html> <html> <head><title>ログインページ</title> <meta charset="utf-8"> <!-- ◆ スマートフォン用 --> <meta name="viewport" content="width=device-width, initial-scale=1" /> <!-- jQuery本体--> <script type="text/javascript" src="./jquery/jquery-2.1.3.js"></script> <!-- スマホ用スタイルシート --> <link rel="stylesheet" href="./jquery/jquery.mobile-1.4.5.min.css" /> <!-- スマホ用JavaScript --> <script src="./jquery/jquery.mobile-1.4.5.min.js"></script> </head> <body bgcolor="#FFFFCC"> <br> <?php for($i=0; $i<60; $i++){ echo '&nbsp'; } if($_SESSION['login']!==1){ echo '<a href="membership_form.php"><img src="./images/shinki.png" border="0"></a>'; echo '&nbsp;<a href="login.php"><img src="./images/login.png" border="0"></a>'; }else{ // ログインしてれば echo '<a href="mypage.php"><img src="./images/mypage.png" border="0"></a>'; echo '&nbsp;<a href="logout.php"><img src="./images/logout.png" border="0"></a>'; } ?> <br><br> <?php ////////////// // 表の表示 // ////////////// echo '<center>'; echo '<table width="320" cellpadding="0" cellspacing="0" border="0">'; echo '<tr rowspan="10" width="320">'; // ⇐ このrowspan="14"で、⇒の画像などを幅寄せできる【重要】 echo '<form name="form1" method="post" action="login.php">'; echo '<tr><td><img src="./images/login_bar.png" width="100%"></td></tr>'; echo '<tr><td width="320" height="20" class="line1">ログインID(メールアドレス)</td></tr>'; echo '<tr>'; echo '<td width="320" height="20" align="middle">'; echo '<input type="text" class="yokohaba" name="login_id" id="login_id" size="75" tabindex="1">'; echo '</td>'; echo '</tr>'; echo '<td width="320" height="20" class="line1">パスワード</td>'; echo '</tr>'; echo '<tr>'; echo '<td width="320" height="20" align="middle">'; //echo '<input type="password" class="yokohaba" name="password" id="password" size="75" tabindex="2" value="'.$_COOKIE['pass'].'">'; echo '<input type="password" class="yokohaba" name="password" id="password" size="75" tabindex="2">'; echo '</td>'; echo '</tr>'; echo '<tr><td width="320" height="20" align="middle">'; echo '<a href="JavaScript:document.form1.submit()" onclick="location.href=\'login.php\'"><img src="./images/login_send.png" border="0" tabindex="3" width="100%"></a>'; echo '</td></tr>'; echo '</form>'; echo '</table>'; ?> <br><br> <center><a href="top.php">トップページ</a></center> </center> </body> </html> どこがどう間違っているのか、ご指導お願い致します。

みんなの回答

  • hymat
  • ベストアンサー率58% (95/162)
回答No.3

あとは、<table>と<form>が入り組んでいてDOMが正しく解釈されてないことですね。<tr>タグも1個余分です。<table>をレイアウトのために使うのは違反ですが、使うのならば、<form>に id="form1" を付けて、各<input>にform="form1" を指定する必要があります。 <?php ////////////// // 表の表示 // ////////////// echo '<center>'; echo '<table width="320" cellpadding="0" cellspacing="0" border="0"><tbody>'; echo '<form name="form1" id="form1" method="post" action="login.php" data-ajax="false">'; echo '<tr rowspan="10" width="320">'; // ⇐ このrowspan="14"で、⇒の画像などを幅寄せできる【重要】 echo '<td><img src="./images/login_bar.png" width="100%"></td></tr>'; echo '<tr><td width="320" height="20" class="line1">ログインID(メールアドレス)</td></tr>'; echo '<tr>'; echo '<td width="320" height="20" align="middle">'; echo '<input type="text" form="form1" class="yokohaba" name="login_id" id="login_id" size="75" tabindex="1">'; echo '</td>'; echo '</tr>'; echo '<td width="320" height="20" class="line1">パスワード</td>'; echo '</tr>'; echo '<tr>'; echo '<td width="320" height="20" align="middle">'; //echo '<input type="password" class="yokohaba" name="password" id="password" size="75" tabindex="2" value="'.$_COOKIE['pass'].'">'; echo '<input type="password" form="form1" class="yokohaba" name="password" id="password" size="75" tabindex="2">'; echo '</td>'; echo '</tr>'; echo '<tr><td width="320" height="20" align="middle">'; echo '<a onclick="document.form1.submit();" >submit</a>'; echo '</td></tr>'; echo '</form>'; echo '</tbody></table>'; ?>

beterugius
質問者

お礼

ご指導ありがとうございました。

beterugius
質問者

補足

おかげさまで、修正させていただいたところ、ログインできるようになりました。本当にお世話になりました。ありがとうございます^^

  • hymat
  • ベストアンサー率58% (95/162)
回答No.2

わかりました。 echo '<a href="JavaScript:document.form1.submit()" onclick="location.href=\'login.php\'"><img src="./images/login_send.png" border="0" tabindex="3" width="100%"></a>'; の部分ですね。 hrefでsubmit()しているのに、onclickはlocation.href=\'login.php\'でページ遷移しています。 hrefを優先するかonclickを優先するかブラウザによって挙動が違って、Android上のブラウザーはonclickに反応しているのでしょう。 何にせよ、ここにonclickは不要です。

beterugius
質問者

お礼

ご回答にお時間いただき、ありがとうございました。

beterugius
質問者

補足

ちなみに、onclick=""を削除してみたのですが、それでもログインできませんでした。本来はlogin.phpから自分自身にPOSTデータを投げているのですが、 test.php という、スクリプトに遷移させて、var_dump()してみたところ、IDもパスワードも両方NULL になってました。なので、login.php 自身の問題ではないかと思います。根本的に、自分のAndroid4.3に対応してないとか、HTMLのバージョンも5から4.01に下げてみたのですが、それでもだめでした。もうこうなったら、どうにもなりませんね(;^_^A アセアセ・・・

  • hymat
  • ベストアンサー率58% (95/162)
回答No.1

jquery-mobileを使うなら、<form>タグに data-ajax="false"が必要でしょう。 PCからもloginできないはずなので、何かのカン違いではないかと?

beterugius
質問者

お礼

ご回答、どうもありがとうございました。

beterugius
質問者

補足

ちなみに、login.php の<form>タグを、 <form name="form1" method="post" action="login.php" data-ajax="false">と書いてみましたが、やはり、ログインできませんでした。 PCからは、この data-ajax="false" を書いていませんし、ログインできております。ちなみに、スマホからPC版へのログインもできてます。 また、false を true にしてもログインできませんでした><

関連するQ&A

専門家に質問してみよう