• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

eintragen/austragen in DB über Formular

crea

New member
Guten Morgen,

Ich habe ein Tutorial nachgebaut mit dem Ziel sich für einen Newsletter ein und austragen zu können.
Funktionen wie die Überprüfung der Eingaben und Capatcha sollen Stück für Stück dazu kommen. Mit PHP habe ich bis jetzt meist nur durch das anpassen von CMS zu tun gehabt.
... naja ... fit in PHP geht anders :rolleyes:

Nach einigem hin und her, Änderungen des TUT-Codes (von 2002) und probieren funktioniert das "eintragen" für sich wie gewollt. Wenn ich jedoch die "austragen" Funktion dazunehmen will hakt es doch ziemlich.

Würde mich freuen wenn mir hier eine/r n Tipp geben kann wo es klemmt. ... Bitte nicht gleich mit dem virtuellen PHP-Grundlagen-Buch hauen^^ ... ich lerne besser durch try n' error und hoffe ich kann das nach html, css & co auch mit php halbwegs erfolgreich durchziehen.

Vielen Dank vorab - crea

Die Fehlermeldung:
Notice: Use of undefined constant eintragen - assumed 'eintragen' in /var/root usw/nlScript.php on line 9

Notice: Use of undefined constant austragen - assumed 'austragen' in /var/root usw/nlScript.php on line 10
Das googeln der Fehlermeldung bringt mich im Moment so nicht wirklich weiter. Und ich erhoffe mir hier einen konkreten Anstoss ...



Das Formular:
Code:
<form action="nlScript.php" method="post">
<small>Name:</small><br />
<input type="text" name="letter_name"><br />
<small>E-Mail Adresse</small><br />
<input type="text" name="letter_mail"><br />
<input type="submit" value="eintragen" name="eintragen" title="Newsletter abonieren">
<input type="submit" value="austragen" name="austragen" title="Newsletter abbestellen">
</form>

Der Code:
Code:
<?php 
error_reporting(E_ALL);  
//Eintragen Anfang

//Variablen definieren
$mail= $_POST['letter_mail'];
$name= $_POST['letter_name'];

$eintragen = eintragen;
$austragen = austragen;

// Eintragen 
if($eintragen=='eintragen') {

//verbindung zur datenbank herstellen
$db = mysql_connect("localhost","xxxxxx","xxxxxx");
mysql_select_db("xxxxxx",$db);

//mysql befehl setzen	
$sql_query = "INSERT INTO newsletter (letter_mail, letter_name) VALUES ('$mail','$name') ";
$sql_result = mysql_query($sql_query);
		
//mysql schliessen
mysql_close();

//bestätigung im browser
echo "<div style='padding:10px;-moz-border-radius:10px;-khtml-border-radius:10px;background-color:red; width:300px; height:auto;-moz-box-shadow: 3px 3px 10px black;box-shadow: 3px 3px 10px black;-webkit-box-shadow: 3px 3px 10px black;'>Hallo <strong>" . $name . "</strong>,<br /><br />Du wurdest erfolgreich mit der Mail Adresse: <strong>" . $mail . "</strong><br />für den erhalt des Newsletters eingetragen.<br /><br /></div>";
			
}
	
// Austragen 	
if($austragen=='austragen') {	
	
//verbindung zur datenbank herstellen
$db = mysql_connect("localhost","xxxxxx","xxxxxx");
mysql_select_db("xxxxxxx",$db);	
		
//mysql befehl setzen
$sql_query = "DELETE * FROM newsletter (letter_mail, letter_name) VALUES ('$mail','$name') ";
$sql_result = mysql_query($sql_query);

//mysql schliessen
mysql_close();
			
//bestätigung im browser
echo "<div style='padding:10px;-moz-border-radius:10px;-khtml-border-radius:10px;background-color:red; width:300px; height:auto;-moz-box-shadow: 3px 3px 10px black;box-shadow: 3px 3px 10px black;-webkit-box-shadow: 3px 3px 10px black;'>Hallo <strong>" . $name . "</strong>,<br /><br />Du hast Dich mit der Mail Adresse: <strong>" . $mail . "</strong><br />erfolgreich vom erhalt des Newsletters ausgetragen.<br /><br /></div>";
}	
?>
 
Zuletzt bearbeitet:
Die Fehlermeldungen deuten darauf hin, dass du in den Zeilen 9 und 10 eine Variabel benutzt und vergessen hast das Dollarzeichen zu benutzen.

Und noch ein Hinweis, das Skript (wenn es läuft) ist unsicher, das solltest du auf keinen Fall öffentlich machen. Stichwort:SQL Injections
 
Ok, das mit dem Dollarzeichen ist ein Wink .. noch guck ich da in die Röhre, aber es ist ein Ansatz .. Danke!

.. und zur SQL Injection .. das wird wohl ein "Kapitel für sich werden" ... Plugins wie das SecuritySystem von BS-Fusion haben mir das bisher einfach gemacht ... die Zeit ist ja nun vorbei :D
 
Du hast in deinem Formular 2 submit-buttons. Du mußt checken, welcher betätigt wurde, z.B. mit
PHP:
$austragen = isset($_POST['austragen']);
und dann verzweigen.
 
Hallo,

also es hat mich auf jeden Fall weiter gebracht und es funktioniert alles soweit :) ... dafür das ich das Erste Mal ausserhalb von CMS modifikation mit PHP versuche warm zuu werden klappt es doch ganz gut finde ich.

Eine Frage noch, habe ich die Variablen jetzt korrekt gegen sql injection geschützt? :confused:

Jetzt geht es an das einbinden von recapatcha ... falls einer ne gute Seite mit Erklärungen dazu kennt wäre ich nicht böse den Link zu bekommen. Ansonsten halt wie immer .. try 'n error

Danke vorab - crea
Code:
<?php 
error_reporting(E_ALL); 
  
//verbindung zur datenbank herstellen
$db = mysql_connect("localhost","xxxxxx","xxxxxx");
mysql_select_db("xxxxxx",$db);

//Variablen definieren 
$mail= ($_POST['letter_mail']) ? mysql_real_escape_string($_POST["letter_mail"]) : ""; 
$first_name= ($_POST['letter_first_name']) ? mysql_real_escape_string($_POST["letter_first_name"]) : "";
$last_name= ($_POST['letter_last_name']) ? mysql_real_escape_string($_POST["letter_last_name"]) : "";

        // email validieren
	if (filter_var($mail, FILTER_VALIDATE_EMAIL)) { 


		// Eintragen 
		if(isset($_POST['eintragen'])) {
		
			//mysql befehl setzen
			$sql_query = ("INSERT INTO newsletter (letter_mail, letter_first_name, letter_last_name) VALUES ('$mail','$first_name','$last_name') ");
			$sql_result = mysql_query($sql_query);
		
			//mysql schliessen
			mysql_close();

			//bestätigung im browser
			echo "
			<div style='padding:10px;-moz-border-radius:10px;-khtml-border-radius:10px;background-color:red; width:300px; height:auto;-moz-box-shadow: 3px 3px 10px black;box-shadow: 3px 3px 10px black;-webkit-box-shadow: 3px 3px 10px black;'>
			Hallo <strong>" . $first_name . "</strong>,<br /><br />Du wurdest erfolgreich mit der Mail Adresse: <strong>" . $mail . "</strong><br />
			für den erhalt des Newsletters eingetragen.<br /><br />
			</div>
			";
			
		}
		else
	
		// Austragen 	
		if(isset($_POST['austragen'] )) {
	
			//mysql befehl setzen
			$loeschen = ("DELETE FROM newsletter WHERE letter_mail='$mail'");
			$loeschen = mysql_query($loeschen);

			//mysql schliessen
			mysql_close();
			
			//bestätigung im browser
			echo "
			<div style='padding:10px;-moz-border-radius:10px;-khtml-border-radius:10px;background-color:red; width:300px; height:auto;-moz-box-shadow: 3px 3px 10px black;box-shadow: 3px 3px 10px black;-webkit-box-shadow: 3px 3px 10px black;'>
			Hallo <strong>" . $first_name . "</strong>,<br /><br />Du hast Dich mit der Mail Adresse: <strong>" . $mail . "</strong><br />
			erfolgreich vom erhalt des Newsletters ausgetragen.<br /><br />
			</div>
			";
		}
	}	
	
	else {
			//ablehnungs bestätigung im browser
			echo "
			<div style='padding:10px;-moz-border-radius:10px;-khtml-border-radius:10px;background-color:red; width:300px; height:auto;-moz-box-shadow: 3px 3px 10px black;box-shadow: 3px 3px 10px black;-webkit-box-shadow: 3px 3px 10px black;'>
			Hallo <strong>" . $first_name . "</strong>,<br /><br />Du hast versucht Dich mit der ungültigen Mail Adresse: <strong>" . $mail . "</strong><br />
			anzumelden. Bitte versuche es erneut.<br /><br />
			</div>";
	}
	
?>
 
Zurück
Oben