PHP Modifica Post con Google OpenID
-
21-12-2019 - |
Domanda
Sto cercando di codificare una pagina di modifica post per il mio sito che pubblica a sé usando un accesso a Google OpenID, tuttavia ho solo una pagina vuota, anziché il modulo di modifica.Ecco il codice che sto usando:
<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>
.
Qualsiasi aiuto sarà apprezzato.(Non importa le dichiarazioni SQL PHP, lo convertirò in PDO in seguito).
Soluzione 4
qui è il codice che ha funzionato (il codice completo sotto lo snippet).
Il bug iniziale è stato la rottura della linea (<br>
) dopo il "il tuo post è stato modificato per:" che non è stato formattato correttamente per PHP.
Gli altri bug stavano relazionando la variabile $ _GET correttamente, il nome della tabella sbagliato e il ciclo errato della condizione iniziale "while".
Grazie!
Altri suggerimenti
$query="SELECT * from $tbl WHERE $id=id";
.
dovrebbe essere
$query="SELECT * from $tbl WHERE id=$id";
.
(I.e. Flip attorno all'ID "ID" per inserire prima la colonna SQL e la tua variabile PHP secondo)
Non sono sicuro se risolverà tutto, ma quella è stata la prima cosa che mi ha saltato fuori.
Sono sicuro che vuoi almeno il modulo di accesso per presentarsi se non ancora registrato.In tal caso, cambia:
while($row = mysql_fetch_array($result)) {
...
}
.
A questo:
$row = mysql_fetch_array($result);
...
//}
.
Assumendo che la query sia destinata a restituire solo 1 o 0 righe, quindi non è comunque necessario per loop.
Ho la chiusura riportata per chiarire che deve essere preso fuori dal codice operativo.Puoi semplicemente eliminarlo.
I moduli del tuo codice sono al suo interno mentre mysql_fetch_array loop, quindi quando non viene trovato alcun record utente, né la forma riceve la possibilità di visualizzare.
Prova a spostare Session_Start () nella parte superiore della tua pagina?Generalmente vuoi chiamarlo prima che qualsiasi altra cosa venga inviata al browser.Sopra il tag HTML, probabilmente.