Versuche es mal so:
Code: Alles auswählen
<?php
session_start();
if($_SESSION['passwd'] != "ja")
{
session_destroy();
// echo "Sie sind nicht eingeloggt!<meta http-equiv = 'refresh' content='1; URL=./index.php'>";
echo "Sie sind nicht eingeloggt!";
sleep(1);
header('Location: index.php');
}
elseif($_SESSION['passwd'] == "ja"){
if(!isset($_SESSION['session_id'])) {
$_SESSION['session_id'] = session_id();
$_SESSION['uhrzeit'] = date("Y-m-d H:i:s");
}
}
?>
<?php
include("./data/data.php");
mysqli_select_db($con, $db);
$webtext1 = (isset($_POST["webtext1"])) ? mysqli_real_escape_string($con, $_POST["webtext1"]): '';
$webtext2 = (isset($_POST["webtext2"])) ? mysqli_real_escape_string($con, $_POST["webtext2"]): '';
$titel1 = (isset($_POST["titel1_aendern"])) ? mysqli_real_escape_string($con, $_POST["titel1_aendern"]): '';
$titel2 = (isset($_POST["titel2_aendern"])) ? mysqli_real_escape_string($con, $_POST["titel2_aendern"]): '';
$web = (isset($_POST["web"])) ? mysqli_real_escape_string($con, $_POST["web"]): '';
$webseite = (isset($_POST["webseite"])) ? mysqli_real_escape_string($con, $_POST["webseite"]): '';
echo "web: ".$web."<br>titel: ".$titel1;
if($web == "neu") {
$web_neu = "INSERT INTO freundeskreise_web(fid_web, text1, text2, titel1, titel2, website) ";
$web_neu .= "VALUES('" .$_SESSION['fk_id'] . "', '$webtext1', '$webtext2', '$titel1', '$titel2', '$webseite') ";
$web_eintragen = mysqli_query($con, $web_neu)
or die ("Konnte Termine nicht eintragen, weil: ". mysqli_error($con));
// echo "Sie werden gleich weitergeleitet !<meta http-equiv = 'refresh' content='1; URL=./webeingabe.php'>";
echo "Sie werden gleich weitergeleitet !";
sleep(1);
header('Location: webeingabe.php');
}
elseif($web == "update") {
$web_aendern = "UPDATE freundeskreise_web SET text1 = '$webtext1', text2 = '$webtext2', titel1 = '$titel1', titel2 = '$titel2', ";
$web_aendern .= "website = '$webseite' WHERE fid_web = '" .$_SESSION['fk_id'] . "'";
$web_aendern2 = mysqli_query($con, $web_aendern)
or die ("Konnte Termine nicht ändern, weil: ". mysqli_error($con));
// echo "Sie werden gleich weitergeleitet !<meta http-equiv = 'refresh' content='1; URL=./webeingabe.php'>";
echo "Sie werden gleich weitergeleitet !";
sleep(1);
header('Location: webeingabe.php');
}
mysqli_close($con);
Zunächst zur Datenbank:
Alle, wirklich (fast) alle mysqli-Befehle beziehen sich auf eine Verbindungs-ID, bei dir $con.
Das muss also überall rein, auch unerwarteter Weise in mysqli_real_escape_string();
Dann zu deiner Weiterleitung:
Ein HTML-Meta zu verwenden, setzt voraus, dass man genau an dieser Stelle auch in den Header der Webseite schreibt. Das ist aber in deinem Script nirgends gegeben!
Besser ist es, wenn man schon php nutzt, mit header() zu arbeiten, wie ich das jetzt umgebaut habe.
sleep(1) ist dabei 1 Sekunde Wartezeit, bevor das Script fortfährt. Das wäre vergleichbar mit der verzögerten Weiterleitung mittels meta-Tag.
Wobei 3 Sekunden dem User besser stehen würden, denn in einer Sekunde den Text zu erfassen und zu verstehen ist schon recht kurz...
Da nun der 1. Parameter bei mysqli_real_escape_string() fehlte, also die DB-Verbindung, vermute ich mal, dass das Script keine Werte aus $_POST übernahm und damit auch keine weitere Aktion auslöste.
Das sollte also jetzt klappen.
Und noch ein Hinweis zu $_SESSION, bzw den Superglobals:
Verwende besser alle Keys durchgängig in Kleinbuchstaben. Dann gibt es keine Verwechslung, was denn nun groß- und was kleingeschrieben werden muss.
Dein Script ist zwar überschaubar kurz, aber wenn man sich hier schon nicht daran gewöhnt, stößt man bei komplexeren Scripten schnell auf zunächst unerklärbare Fehler und das mühsame Debugging geht los.
Man sollte also $_SESSION['session_id'] und nicht $_SESSION['session_ID'] verwenden.
Ebenso sollten alles Keys immer in einfache Hochkommas gefasst werden. Somit wird aus $_SESSION[fk_id] ein $_SESSION['fk_id'] und aus $_SESSION[uhrzeit] ein besser lesbares $_SESSION['uhrzeit'].
Denn man kann anstatt der Strings als Keys auch Variablen verwenden, deren Inhalte dann die Key-Namen beinhalten.
Beispiel wäre $_SESSION[$date], um den Wert "uhrzeit" als Keynamen zu benutzen ($date = 'uhrzeit';).
Das macht insgesamt das Lesen von arrays / Superglobals insgesamt einfacher und php hat weniger Schwierigkeiten, zwischen möglichen Konstanten (die man in der Regel auch eher komplett in Großbuchstaben halten sollte, aber nicht muss) und echten Keynamen zu unterscheiden. Denn die Konstanten muss sich php von der Definition an bis zum Ende des gesamten Scripts merken und das kostet Speicherplatz und Zeit.
Denn "uhrzeit" könnte mit der Definition
eine Konstante werden und dann wäre $_SESSION[uhrzeit] in Wirklichkeit $_SESSION['12787348'], oder was auch immer gerade für ein Zeitstempel mit time() generiert werden würde.
Und das wäre dann an dieser Stelle definitiv so nicht gewollt und könnte jederzeit passieren, wenn man vor $_SESSION[uhrzeit] eine gleichlautende Konstante einfügt, aus welchem Grund auch immer...
Zuletzt noch ein paar Tipps:
Wenn du etwa über einen zusammengesetzten String an die Datenbank übergehen möchtest, solltest du besser bei der ersten Ausführung des Scriptes erst einmal einen bewussten Haltepunkte einfügen.
eignet sich in diesem Script sehr gut, um in diesem Fall das zusammengebaute SQL-Statement vollständig angezeigt zu bekommen, damit enthaltene Fehler gefunden und gezielt im Script abgestellt werden können.
Wenn du in der Session eine Uhrzeit führen möchtest, wäre ein einfacher Zeitstempel sicherlich besser geeignet.
Ich würde also empfehlen, einfach
zu definieren, solange man dieses nur in der Session führen, aber nicht auswerten möchte.
Dahinter versteckt sich ja die Anzahl Sekunden, die (unter Linux) seit dem 01.01.1970 (müsste 1970 sein) bis zum aktuellen Zeitpunkt vergangen sind. Das lässt sich dann auch jederzeit bei Bedarf mit
formatiert ausgeben, verbraucht aber im Speicher viel weniger Platz, als ein formatierter String. Und der Speicher ist ja kostbar, da nur begrenzt vorhanden.
Aktuell habe ich allerdings zu wenig Zeit und die angegebenen Dateien index.php und data.php fehlen mir, um dieses Script ausgiebig zu testen.
Mit den Anpassungen "sollte" es aber jetzt funktionieren.
Mit etwas mehr Debugging wird es Dir darüber hinaus sicher gelingen, die letzten Fehler zielsicher zu finden und abzustellen.
Ich hoffe, ich konnte ausreichend helfen.
Gewöhne die aber bitte dazu auch an, im Script mehr für die Lesbarkeit zu sorgen. Also z. B. die Zeilen
Code: Alles auswählen
$webtext1 = (isset($_POST["webtext1"])) ? mysqli_real_escape_string($con, $_POST["webtext1"]): '';
$webtext2 = (isset($_POST["webtext2"])) ? mysqli_real_escape_string($con, $_POST["webtext2"]): '';
$titel1 = (isset($_POST["titel1_aendern"])) ? mysqli_real_escape_string($con, $_POST["titel1_aendern"]): '';
$titel2 = (isset($_POST["titel2_aendern"])) ? mysqli_real_escape_string($con, $_POST["titel2_aendern"]): '';
$web = (isset($_POST["web"])) ? mysqli_real_escape_string($con, $_POST["web"]): '';
$webseite = (isset($_POST["webseite"])) ? mysqli_real_escape_string($con, $_POST["webseite"]): '';
würde ich so angeben:
Code: Alles auswählen
$webtext1 = (isset($_POST["webtext1"])) ? mysqli_real_escape_string($con, $_POST["webtext1"]) : '';
$webtext2 = (isset($_POST["webtext2"])) ? mysqli_real_escape_string($con, $_POST["webtext2"]) : '';
$titel1 = (isset($_POST["titel1_aendern"])) ? mysqli_real_escape_string($con, $_POST["titel1_aendern"]) : '';
$titel2 = (isset($_POST["titel2_aendern"])) ? mysqli_real_escape_string($con, $_POST["titel2_aendern"]) : '';
$web = (isset($_POST["web"])) ? mysqli_real_escape_string($con, $_POST["web"]) : '';
$webseite = (isset($_POST["webseite"])) ? mysqli_real_escape_string($con, $_POST["webseite"]) : '';
Schaut doch gleich besser aus, oder?
Und aus
Code: Alles auswählen
$web_neu = "INSERT INTO freundeskreise_web(fid_web, text1, text2, titel1, titel2, website) ";
$web_neu .= "VALUES('" .$_SESSION['fk_id'] . "', '$webtext1', '$webtext2', '$titel1', '$titel2', '$webseite') ";
könnte man auch das hier machen:
Code: Alles auswählen
$web_neu = "INSERT INTO
freundeskreise_web
(fid_web,
text1,
text2,
titel1,
titel2,
website
) VALUES (
'" . $_SESSION['fk_id'] . "',
'$webtext1',
'$webtext2',
'$titel1',
'$titel2',
'$webseite')";
Finde ich deutlich übersichtlicher.