Kurze Frage: Doppeleintrag durch Login!?

markberg

Erfahrenes Mitglied
Hallo,
ich habe ein Formular -> Eintrag in DB speichern = Funktioniert!

Habe nun ein zweites Formular erstellt und speichern allerdings mit einem Login versehen, kann es sein, dass dadurch meine Einträge über diese logingeschützte immer doppelt eingetragen werden?
Und wenn Ja, kann man dies irgendwie verhindern?

meine speichern Seite:

PHP:
<?
session_start();

if(!isset($_SESSION['loginname'])){
$loginstatus=0;
}
else{$loginstatus=1;}

// mein geschützter Bereich... plus mysql DB Eintrag etc...

if($loginstatus==0){
echo 'Bitte loggen Sie sich ein! <a href="login_form.php"><b>&nbspZum Login >>></b></a>';
}
else {
?>

// html...

<?
}           // Abfrage Ende...
?>
 
Servus, so wie du das Programmiert hast wird das nix.

Ansich würde das schon funktionieren, aber deine letzte Else Anweisung wird zum ersten schonmal nicht als geschlossen betrachtet.
Und warum zwei IF Anweisungen, spar dir die Variable Loginstatus und schreib das der zweiten IF Anweisung gleich mit in die Erste und fertig biste:

PHP:
<? 
session_start(); 

if(!isset($_SESSION['loginname'])){
/** offener Bereich **/ 
  echo 'Bitte loggen Sie sich ein! <a href="login_form.php"><b>&nbspZum Login >>></b></a>';
} 
else{
/** geschlossener Bereich **/
  echo "Sie sind angemeldeter User";

/** als Tipp HTML Tags kannst du auch im PHP Teil einbauen **/
echo "<HTML><HEAD><TITLE></TITLE></HEAD><BODY></BODY></HTML>";
} 

?>

So sollte das was werden und angst vor doppel Einträgen brauchst da eigentlich auch keine haben.
 
Wie, so wird das nichts? Es funktioniert so alles!


Session "Loginname" = alles wunderbar, alles sichtbar machen (loginstatus 1)...

oder


Loginstatus 0 = Session "Loginname" nicht angegeben, weil Seite zufällig gefunden für diesen zeige: "Bitte einloggen"...

Zweite else Anweisung wird nach dem geschützten Bereich beendet?!

Nur dies ist ausschließlich die Seite Speichern in DB und vielen Dank blabla... Darum gehe ich davon aus, dass das mit dem Login zusammenhängt, also die Doppeleinträge...
 
Sorry, aber wie soll hier jemand beurteilen ob irgendwas in eine DB doppelt Eingetragen wird, wenn wir nicht mal ein INSERT Befehl sehen?
 
Also daran kann es ja eigentlich nicht liegen... Funktioniert ja auch bei meinem nicht geschützten Formular... Ich möchte nur vermeiden, dass jemand die Speichern Seite irgendwie zufällig findet, denn dadurch würde ja jedesmal etwas in der DB gespeichert werden! Mir ist gerade eingefallen, dass es ja aber auch so etwas gibt wie, speichere erst, wenn das Formular gesandt wurde oder? Hier aber mal der Code:

PHP:
$verbindung = mysql_connect("xxx","xxx","xxx");
$query=("use DBxxx");
$kategorie = $_REQUEST['kategorie'];
$beginn = $_REQUEST['beginn']; 
$sql= "INSERT INTO `DBxxx`.`tabelle` 
(`kategorie`, `beginn`)
VALUES ('$kategorie', '$beginn')";
mysql_query( $sql ) or die( mysql_error() );
 
hallo, ich sagte das das obige nicht die eleganteste Lösung ist und desswegen mein Vorschlag, außerdem hast du bisher nicht gesagt gehabt das du nen Doppeleintrag hast

aber egal, zum Problem:

wie sehen denn die Doppeleinträge aus? wird wirklich zweimal genau das gleiche eingetragen? dann spricht das dafür das dein Script irgendwie zweimal aufeinander folgend aufgerufen wird.
Ich würde das alles in eine Datei packen, Formular und php Script und das so geschrieben das das script nur ausgeführt wird wenn vorher im Formular was eingegeben wurde.

Alternativ kannste auch vorher die Variablen prüfen und kein Insert ausführen wenn die Variablen leer sind.
 
Zuletzt bearbeitet:
PHP:
if(isset($_REQUEST['submit'])){
    $sql= "INSERT INTO `DBxxx`.`tabelle` (`kategorie`, `beginn`) VALUES ('$kategorie', $beginn')"; mysql_query( $sql ) or die( mysql_error() );
}

Oder du überprüfst das mit $_POST['submit'] bzw. $_GHET['submit']

Der Submit-Button muss dann natürlich auch name="submit" beinhalten.
 
Guten Morgen...

Also trotz if(isset... gibt es noch Doppeleinträge... (auch wenn man die Seite direkt aufruft gibt es Doppeleinträge!). Verstehe das irgendwie nicht, hat da noch jemand einen heissen Tipp... Ist mir ein Rätsel... :confused:
 
ich rechtfertige mich hier nicht mehr, nur soviel wer Klare Fragen stellt bekommt auch klare Antworten und ein "kann es sein das...." mit nem Codeschnipsel is keine klare Frage!

@Markberg
is das Insert Script oben genauso wie du es in deiner Datei stehen hast?

weil aus:
PHP:
mysql_query( $sql ) or die( mysql_error() );
würd ich
PHP:
mysql_query( $sql, $verbindung ) or die( mysql_error() );
machen und so wie ich dich jetzt verstehe taucht das Problem auch direkt im Insert Script ohne das Login auf, geändert hast du da nichts?
Ansonsten schick mal alles was du genau brauchst und ich schreib dir das Script einfach mal fertig
 
Zurück