Im becomming eines ganz hier regelmäßig ...Passing eine MySQL-Zeile innerhalb eines PHP/HTML-Formulars
ich eine Tabelle auszudrucken in PHP zu dynamicly versuchen je nachdem, was Ergebnisse mit einem MYSQL Statement zu finden sind.
Siehe unten Code, erhalte ich die folgenden Fehler
[Fr 9. Juni 18: 51: 32,478737 2017] [fcgid: warnen] [pid 63368] [client 5.69.190.95:64631] mod_fcgid: stderr: PHP Parse error: syntax error, unexpected 'showhistory' (T_STRING), expecting ',' or ';' in /home/tools/public_html/searchhistory.php on line 84, referer: http://tools.cidetech.co.uk/history.php
Es zu haben scheint ein Problem, nur mit den „Form“ Gebäuden im Innern der Schleife habe ich keine Probleme, bis dieser Linie nach oben -
echo " <td><form method="POST" action="showhistory.php">
<input type="hidden" name="id_director" value=".$row["id"]"
</form></td> ";
scheine ich kann nicht, wo ich falsch werde, um herauszufinden, das in nur reinem HTML gut funktionieren würde, aber es muss innerhalb des mysql/php Teils sein, wie ich pas muss s die Zeilen-ID innerhalb der Schaltfläche.
Um genau zu sein es ist dieser Teil des Codes ich mit
for ($i = 0; $i < count($idArray); $i++)
{
$sql="SELECT * FROM history WHERE id LIKE '%{$idArray[$i]}%'";
$result=$con->query($sql);
while($row=$result->fetch_assoc())
{
echo "<tr>";
echo "<td><pre>".$row["id"]."</pre></td>";
echo "<td><pre>".$row["date"]."</pre></td>";
echo "<td><pre>".$row["domain"]."</pre></td>";
echo " <td><form method="POST" action="showhistory.php">
<input type="hidden" name="id_director" value=".$row["id"]"
</form></td> ";
}
}
echo "</table>";
mysqli_close($conn);
?>
Der vollständige Code hier "statt" für die Zeichenfolge zu sehen ist
<DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>CWCS Domain Checker Tool</title>
</head>
<body>
<div class="header">
<a href="index.php">
<img src="cwcs-logo.png">
</a>
</div>
<hr/>
<div class="searchform">
<form action="searchhistory.php" method="post">
<label for="domain"> <input class="submit" type="text" name="domain" /> </label>
<input class="submitbutton" type="submit" name="search" value="Search for Domain" />
</form>
</div>
<?php
#define connection info/variables needed
$servername = "localhost";
$username = "";
$password = "";
$dbname = "domainhistory";
$domain = $_POST['domain'];
$idArray = array();
#creates mysql connection
$con=new mysqli($servername,$username,$password,$dbname);
if($con->connect_error)
{
echo 'Connection Faild: '.$con->connect_error;
}
else
{
$sql="SELECT * FROM history WHERE domain LIKE '%{$domain}%'";
$result=$con->query($sql);
#Pushes the ID of the mysql row into an array
while($row=$result->fetch_assoc())
{
array_push($idArray,$row["id"]);
}
}
mysqli_close($conn);
?>
<!---prints out the ID's stored in the array -->
<?php
$servername = "localhost";
$username = "";
$password = "";
$dbname = "domainhistory";
$con=new mysqli($servername,$username,$password,$dbname);
if($con->connect_error)
{
echo 'Connection Faild: '.$con->connect_error;
}
else
{
}
echo "<table>";
echo "<tr>";
echo "<th> ID </th>";
echo "<th> Domain</th>";
echo "<th> Date </th>";
echo "</tr>";
## - loops through the ID array, and then prints out the data relating to that ID.
for ($i = 0; $i < count($idArray); $i++)
{
$sql="SELECT * FROM history WHERE id LIKE '%{$idArray[$i]}%'";
$result=$con->query($sql);
while($row=$result->fetch_assoc())
{
echo "<tr>";
echo "<td><pre>".$row["id"]."</pre></td>";
echo "<td><pre>".$row["date"]."</pre></td>";
echo "<td><pre>".$row["domain"]."</pre></td>";
echo " <td><form method="POST" action="showhistory.php">
<input type="hidden" name="id_director" value=".$row["id"]"
</form></td> ";
}
}
echo "</table>";
mysqli_close($conn);
?>
</body>
</html>
Ihr Code ist anfällig für [** SQL-Injection **] (https://en.wikipedia.org/wiki/SQL_injection) Angriffe: Sie sollten [** mysqli **] (http s: //secure.php.net/manual/de/mysqli.prepare.php) oder [** PDO **] (https://secure.php.net/manual/en/pdo.prepared-statements.php) vorbereitete Anweisungen mit gebundenen Parametern wie in [** dieser Beitrag **] beschrieben (https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php). –
Es gibt keine INSERT-Anweisung in diesem Code? Ich verstehe das und der Beitrag, den Sie freigegeben haben, ist nur dann vunerable, wenn Sie in eine MYSQL-Tabelle einfügen? (Ich weiß, es ist off-Thema, aber wäre praktisch, um eine Klarstellung zu haben) – TheOne745665
Nein, SQL-Injektion kann bei jeder Aussage auftreten. Beachten Sie, was Ihre Abfrage sein wird, wenn '$ domain' ist' '; DROP TABLE Geschichte - ' –