PHP Редактировать сообщение с Google OpenID

Я пытаюсь закодировать редакционную страницу для своего сайта, которая отправляет себе сообщение с помощью google openid logon, но я просто получаю пустую страницу вместо формы редактирования. Вот код, который я использую:

<html> <head> <title>BQuotes</title> <!-- <meta name="viewport" content="width=device-width, initial-scale=1"> --> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <link href="votingfiles/voting.css" rel="stylesheet" type="text/css" /> <script src="votingfiles/voting.js" type="text/javascript"></script> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" /> <link rel="stylesheet" type="text/css" href="http://bquotes.me/mystyle-a.css"> <script src="http://code.jquery.com/jquery-1.10.0.min.js"></script> <script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script> <style> .head_text { color: #ffffff; } a { text-decoration: none; } </style> <script type="text/javascript"> $('#g-login').bind('click', function (event) { // event.preventDefault(); // $('#form-id').attr('action', 'google-login.php').trigger('submit'); alert("Clicked"); }); </script> </head> <body style="color:#d4ffaa"> <!-- BQ Edit Post Start --> <div data-role="page" id="editPost"> <div data-role="header" style="background-color:#5FBF00"> <h1 class="head_text">BQuotes: Edit Statuses</h1> </div> <div data-role="main" class="ui-content"> <?php ?> </div> <?php define ('HOSTNAME', 'host'); define ('USERNAME', 'user'); define ('PASSWORD', 'pass'); define ('DATABASE_NAME', 'db'); $db = mysql_connect(HOSTNAME, USERNAME, PASSWORD) or die ('I cannot connect to MySQL.'); mysql_select_db(DATABASE_NAME); $tbl='table'; $id=$_POST['pid']; $query="SELECT * from $tbl WHERE $id=id"; $result = mysql_query($query); while($row = mysql_fetch_array($result)) { $id=$row['id']; $username=$row['username']; $message=$row['message']; $tag=$row['tag']; session_start(); if($_SESSION['myusername'] != null && isset($_SESSION['myusername'])){ echo "<form action='logout.php' method='post' id ='form-logout' data-ajax='false'> <br/><input type='submit' value='Logout'/>"; echo "</form>"; echo "<div style='margin-left:20px;'>Logged In As: ".$_SESSION['myusername']."</div>"; echo "<form name='post-edit' action='' method='post'>"; echo "<input type='hidden' name='id' value=".$row['id'].">"; echo "<input type='hidden' name='username' value=".$row['username'].">"; echo "<textarea name='message' value=".$row['message'].">"; echo "<input type='text' name='tag' value=".$row['tag'].">"; echo "<input type='submit' name='submit' value='Edit!'>"; echo "</form>"; } else if($_SESSION['myusername'] == null){ echo "<form action='google-login.php?login=true' method='post' id ='form-id' data-ajax='false'>"; echo "<span class='loginreq'>Login to Edit</span>"; echo "<br/><input type='submit' value='Login with Google'/>"; echo "</form>"; } } if (isset($_POST['submit'])) { $query = "UPDATE mybq_post_txt_main SET message=$message, tag=$tag WHERE id=$id "; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { echo "Your post has been edited to:";<br> echo $row['message']; echo $row['tag']; } mysql_free_result($result); mysql_close(); } ?> <a href='mybq-index.php'>Home</a> </div> </body> </html> 

Любая помощь будет оценена. (не говоря о операторах PHP SQL, я буду конвертировать их в PDO позже).

 $query="SELECT * from $tbl WHERE $id=id"; 

Должно быть

 $query="SELECT * from $tbl WHERE id=$id"; 

(т. е. перевернуть «id», чтобы сначала поставить столбец SQL, а вторая переменная PHP)

Не уверен, что это все исправит, но это было первое, что выскочило на меня.

Я уверен, что вы, по крайней мере, хотите, чтобы форма входа в систему отображалась, если вы еще не вошли в систему. Если это так, измените:

 while($row = mysql_fetch_array($result)) { ... } 

К этому:

 $row = mysql_fetch_array($result); ... //} 

Я предполагаю, что запрос предназначен только для возврата 1 или 0 строк, так что нет необходимости в цикле в любом случае.

У меня есть завершающая фраза, чтобы уточнить, что ее нужно удалить из рабочего кода. Вы можете просто удалить его.

Формы в вашем коде находятся в цикле WHILE mysql_fetch_array, поэтому, когда запись пользователя не найдена, ни одна форма не имеет возможности отображать.

Попробуйте переместить session_start () в начало страницы? Обычно вы хотите вызвать это, прежде чем что-либо еще отправит в браузер. Возможно, над HTML-тегом.

Вот код, который работал (полный код ниже фрагмента). Исходной ошибкой был разрыв строки ( <br> ) после того, как «ваше сообщение было отредактировано до:», которое не было правильно отформатировано для php. Другие ошибки были связаны с переменной $ _GET правильно, неправильным именем таблицы и неправильным циклом начального условия «while».

Благодаря!