kostenloser Webspace werbefrei: lima-city


(PHP) MySQL-Befehle werden nicht ausgeführt - Warum

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    s*****d

    Hallo!
    Ich habe eine Datei für mein CMS, mit der man einen Artikel/eine Seite erstellen kann.
    Ich poste erst einmal den Code, danach schreibe ich was dazu:
    HTML (erstellen.php):
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>Administration &bull; ILG-CMS</title>
    		<link rel="stylesheet" type="text/css" href="style/style.css">
    	</head>
    	<body>
    		<div id="menu">
    			<table id="menu" border="0">
    				<tr>
    					<td><a href="index.php">Start</a></td>
    					<td><a href="bearbeiten.php">Bearbeiten</a></td>
    					<td><a href="erstellen.php">Erstellen</a></td>
    					<td><a href="loeschen.php">Löschen</a></td>
    					<td><a href="logout.php">Ausloggen</a></td>
    				</tr>
    			</table>
    		</div>
    		<div id="content">
    			<h1 id="titel">
    				Einen neuen Artikel schreiben:
    			</h1>
    			<form name="erstellen" action="erstellen-aktion.php" method="post">
    				<p>Titel des Artikels: <input type="text" name="titel" id="titel"></p>
    				<p>Adresse (Vom Installationsverzeichnis und Kategorie aus): <input type="text" name="url" id="url"></p>
    				<p>Kategorie des Artikels: <input type="text" name="url" id="url"</p>
    				<p>Inhalt</p>
    				<textarea name="artikel" id="artikel"></textarea>		
    				<input type="submit" value="Speichern">
    			</form>
    		</div>
    	</body>
    </html>


    Und die Aktion in PHP (erstellen-aktion.php):
    <?php
    	$titel = $_POST["titel"];
    	$adresse = $_POST["url"];
    	$kategorie = $_POST["kategorie"];
    	$inhalt = $_POST["artikel"];
    	if(!empty($kategorie)) {
    		$eintragen = mysql_query("INSERT INTO cms_artikel (url, titel, artikel, kategorie) VALUES ('$adresse', '$titel', '$inhalt', '$kategorie')");
    	}
    	else {
    		$eintragen = mysql_query("INSERT INTO cms_artikel (url, titel, artikel) VALUES ('$adresse', '$titel', '$inhalt')");
    	}
    	if ($eintragen) {
    		header("Location: index.php?id=erstellt");
    		exit;
    	}
    ?>

    Ich weiß echt nicht, was ich falsch gemacht habe...
    Ich bekomme danach einfach eine weiße Seite mit der URL [...]erstellen-aktion.php
    Ich hoffe, ihr könnt mir helfen!

    MfG. Simon D.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m**********n

    Eine weiße Seite bedeuted erfahrungsgemäß, dass du einen Fehler hast, aber display_errors deaktiviert ist.

    Spontan fällt mir an deinem Code auf, dass du keine Connection aufbaust (oder geschieht das in einer anderen PHP-Datei?)
  4. julianhabib schrieb:
    Versuche den PHP ersteinmal direkt in die Datei zu schreiben
    welchen php? in welche datei? das ist hier kein ratespiel. da versucht man zu helfen.

    simon-d schrieb:
    ... Und die Aktion in PHP (erstellen-aktion.php):
    <?php
    	$titel = $_POST["titel"];
    	$adresse = $_POST["url"];
    	$kategorie = $_POST["kategorie"];
    	$inhalt = $_POST["artikel"];
    	if(!empty($kategorie)) {
    		$eintragen = mysql_query("INSERT INTO cms_artikel (url, titel, artikel, kategorie) VALUES ('$adresse', '$titel', '$inhalt', '$kategorie')");
    	}
    	else {
    		$eintragen = mysql_query("INSERT INTO cms_artikel (url, titel, artikel) VALUES ('$adresse', '$titel', '$inhalt')");
    	}
    	if ($eintragen) {
    		header("Location: index.php?id=erstellt");
    		exit;
    	}
    ?>
    ... Ich bekomme danach einfach eine weiße Seite mit der URL [...]erstellen-aktion.php
    fange diese datei (und andere fehlerbefallene dateien) einfach so an
    <?php
    ini_set('display_errors', '1'); 
    error_reporting(E_ALL | E_STRICT);
    (die 2 zeilen kannst jeder zeit wieder auskommentieren.)
    wenn jetzt alles gut geht, bekommst meldungen von php.
  5. Autor dieses Themas

    s*****d

    Danke, ich habe die Lösung bereits gefunden; der Thread kann geschlossen werden...
  6. Woran lag dein Problem? Übrigens: Du solltest immer die Rückgabewerte von mysql_query abfangen um eventuelle Fehler abzufangen.
  7. Autor dieses Themas

    s*****d

    Hallo!
    Zum Einen bestand der Fehler darin, dass ich wirklich vergessen hatte, mich zu verbinden, zum Anderen darin, dass beim Formular als Wert bei der Kategorie beim
    name="..."
    noch "url" eingegeben war... Vom kopieren :/:-|
    Jetzt funktioniert also das Erstellen, aber (solange ich auch nach Fehlern suche) das Löschen und bearbeiten nicht...
    Ich zeigs mal am Beispiel LÖSCHEN:
    Formular:
    <?php
    	include('auth.php');
    	require_once "../konfiguration/zugangsdaten.php";
    	mysql_connect($server, $user, $passwort) or
    		die("Keine Verbindung möglich: " . mysql_error());
    	mysql_select_db($datenbank);
    		$result = mysql_query("SELECT titel, url, kategorie, id FROM cms_artikel ORDER BY id DESC");
    ?>
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>Administration &bull; ILG-CMS</title>
    		<link rel="stylesheet" type="text/css" href="style/style.css">
    	</head>
    	<body>
    		<div id="menu">
    			<table id="menu" border="0">
    				<tr>
    					<td><a href="index.php">Start</a></td>
    					<td><a href="bearbeiten.php">Bearbeiten</a></td>
    					<td><a href="erstellen.php">Erstellen</a></td>
    					<td><a href="loeschen.php">Löschen</a></td>
    					<td><a href="logout.php">Ausloggen</a></td>
    				</tr>
    			</table>
    		</div>
    		<div id="content">
    			<h1 id="titel">
    				Einen Artikel l&ouml;schen:
    			</h1>
    			<table>
    				<tr>
    					<th>Titel</th>
    					<th>Kategorie</th>
    					<th>ID</th>
    				<tr>
    				<?php
    		while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
    			printf ("<tr><td><a href='loeschen-aktion.php?titel=%s'>%s</a></td><td>%s</td><td>%s</td></tr>", $row["url"], $row["titel"], $row["kategorie"], $row["id"]);
    		}
    		mysql_free_result($result);
    	
    				?>
    			</table>
    		</div>
    	</body>
    </html>


    Und die Verarbeitung:
    <?php
    	ini_set('display_errors', '1');
    	error_reporting(E_ALL | E_STRICT);
    	include('auth.php');
    	require_once "../konfiguration/zugangsdaten.php";
    	mysql_connect($server, $user, $passwort) or
    		die("Keine Verbindung möglich: " . mysql_error());
    	mysql_select_db($datenbank) or
    		die("Datenbankfehler: " . mysql_error());
    	$titel = $_GET["titel"];
    	$loesch = mysql_query("DELETE * FROM cms_artikel WHERE url = '$titel';");
    	if ($loesch) {
    		header("Location: loeschen.php");
    		exit;
    	}
    ?>


    Ich weiß echt nicht weiter...

    MfG. Simon D.
  8. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Du hast ein
    ;
    am Ende des DELETE-Statements, das gehört dort aber nicht hin. Außerdem ist dein Code gegen SQL-Injection anfällig, du solltest unbedingt mysql_real_escape_string() benutzen!
  9. hackyourlife schrieb:
    Außerdem ist dein Code gegen SQL-Injection anfällig, du solltest unbedingt mysql_real_escape_string() benutzen!


    Danke für den Hinweis, endlich sagt das hier mal jemand!

    Genau diese Lücken meinte ich in meinem Beitrag zum CMS als ich von den eklatanten Sicherheitslücken schrieb. Insgesamt bietet das Script keinen Schutz gegen Eingriffe von außen, oder anders gesagt kann jeder, auch ein nicht angemeldeter Gast Daten speichern oder Seiten löschen.

    Mit freundlichen Grüßen.
  10. Und die Fehler werden leider auch immer noch nicht abfangen. Hätte er ein gescheites Error-Handling realisiert
    (if(isset($_POST['name'])) { } else { die("BAM!"); }



    bzw.
    $res = mysql_query("bla bla"); if(!$res)  {  die(mysql_error()); }


    häte er kein Problem, die Fehler zu finden.
  11. simon-d schrieb:
    Ich weiß echt nicht weiter...
    ich schließe mich an ;)
    simon! wo du uns sagst dein formular zu zeigen, ist kein <form ...> drin!? bitte um berichtigung, sonst kann nicht geholfen werden :(
    (ein bisschen mehr über das fehlverhalten würde auch nicht schaden.)
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!