• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Eingabemaske - Seite springt nach oben

DrAcki

Neues Mitglied
Hallo zusammen,

habe mir vor Monaten eine Script programmieren lassen in der der User auf meiner Seite seine Email eintragen kann um News zu erhalten. Jetzt habe ich das Problem, dass die Eingabemaske ziemlich weit unten auf der Seite ist, man muss also scrollen. Wenn der User nun ein Fehler bei der Eingabe macht und auf "Absenden" klickt wird unten zwar die Fehlermeldung angezeigt, die Seite "springt" aber nach oben, sodass der User die Eingabemaske und die Fehlermeldung nicht mehr sieht. Den Programmierer krieg ich leider nicht mehr, gibt es vielleicht einen allgemeinen Befehl der sowas steuert, den ich der Datei suchen kann?

Danke schonmal für Eure Antworten!

Grüße
 
in dem script wird es eine zeile geben, in der es heißt, das bei eingabefehler das formular erneut angezeigt werden soll.
dazu muss der pfad zum formular im script angegeben sein.
wenn du nun am anfang des scriptes eine sprungmarke setzt und den anzeigebefehl bei scriptfehler um diese sprungmarke erweiterst, sollte das dein problem lösen ;)
 
Wie könnte das in HTML aussehen, dass das Formular erneut angezeigt werden soll oder besser gesagt der Befehl... finde in dem Dokument irgendwie nichts.
 
eher nicht.
dieser unvollständige auszug sieht mir eher nach $_GET-auswertung aus um entsprechenden inhalt anzuzeigen oder code auszuführen.
aber möglicherweise doch...
zeig mal den rest bis zur }
 
Code:
// Seitensteuerung
switch ($seite) {

	case 'news':
	
		$html 	= template('news');
		$email	= '';
		$anrede	= '0';
		$selected_nichts = $selcode;
		$selected_frau	= '';
		$selected_herr	= '';
		if ($_POST['submit']) {

	// Formular abgeschickt - eingegebene Daten prüfen
		
		$email 			= eingabe('email');
		$email 			= strtolower($email);
		$agb 			= eingabe('agb');
		$anrede 		= eingabe('anrede');
		$vorname 		= eingabe('vorname');
		$name 			= eingabe('name');
		

		
		// Eingaben auf Vollständigkeit prüfen, ggf. Fehlermeldungen in $fehler erzeugen
		$fehler = '';
		
		if ($anrede != 'Herr' and $anrede != 'Frau')  	$fehler.='Bitte die passende Anrede Frau/Herr anklicken<br>';
		if (!$vorname) 			$fehler.='Bitte geben Sie Ihren Vornamen ein.<br>';
		if (!$name) 			$fehler.='Bitte geben Sie Ihren Familiennamen ein.<br>';
		
		if (!preg_match('/^([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)$/i',$email))	$fehler.='Bitte geben Sie Ihre Emailadresse ein<br>';
		if (!$agb) 				$fehler.='Bitte akzeptieren Sie die AGB durch Ankreuzen des Feldes<br>';
		
		
		if ($fehler == '') {
 
das sieht mir danach aus, als würden diel fehlermeldungen als layer eingeblendet.
da gibts dann keine seitenaktualisierung.
um da eine lösung zu finden, müsste man, denke ich, mal den ganzen code sehen.
 
Hier mal der komplette Code Nr1
HTML:
<?php

// HTML-Code für selektierte Liste
$selcode = 'selected = "selected"';



// Einlesen Textdatei
function lesen($dateiname) {
	return file_get_contents($dateiname);
}

// Einlesen Template
function template($was) {
	$dateiname = '_tmpl_' . $was . '.html';
	return file_get_contents($dateiname);
}

// POST-Eingabe prüfen/Filtern
function eingabe($var) {
	$was 	= trim($_POST[$var]);
	$was 	= strip_tags($was);
	if (get_magic_quotes_gpc()) {
		$was = stripslashes($was);
	}
	return $was;
}

// IP-Adresse ermitteln
function getIP() {
	if ($_SERVER['HTTP_X_FORWARDED_FOR']) { 
		$realip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
	} else { 
		$realip = $_SERVER['REMOTE_ADDR']; 
	}
	return $realip;
}

// gewünschte Seite aus GET-Parameter 's'
$seite	= strtolower($_GET['s']);
if (!$seite) {
	$seite='newsletter';
}

if ($_POST['fs']=='austragen') {
	$seite = 'austragen';
}
if ($_POST['fs']=='newsletter') {
	$seite = 'newsletter';
}

// Konfiguration einlesen
include 'config/inc_config.php';
// Tabellennamen
include 'config/inc_tab.php';

// Seitensteuerung
switch ($seite) {

	case 'newsletter':
	
		$html 	= template('newsletter');
		$email	= '';
		$anrede	= '0';
		$selected_nichts = $selcode;
		$selected_frau	= '';
		$selected_herr	= '';
		if ($_POST['submit']) {

	// Formular abgeschickt - eingegebene Daten prüfen
		
		$email 			= eingabe('email');
		$email 			= strtolower($email);
		$agb 			= eingabe('agb');
		$anrede 		= eingabe('anrede');
		$vorname 		= eingabe('vorname');
		$name 			= eingabe('name');
		
	
		
		// Eingaben auf Vollständigkeit prüfen, ggf. Fehlermeldungen in $fehler erzeugen
		$fehler = '';
		
		if ($anrede != 'Herr' and $anrede != 'Frau')  	$fehler.='Bitte die passende Anrede Frau/Herr anklicken<br>';
		if (!$vorname) 			$fehler.='Bitte geben Sie Ihren Vornamen ein.<br>';
		if (!$name) 			$fehler.='Bitte geben Sie Ihren Familiennamen ein.<br>';
		
		
		if ($tt == '00') 		$fehler.='Bitte geben Sie Ihr Geburtsdatum (Tag) ein<br>';
		if ($mm == '00') 		$fehler.='Bitte geben Sie Ihr Geburtsdatum (Monat) ein<br>';
		if ($jjjj == '00') 		$fehler.='Bitte geben Sie Ihr Geburtsdatum (Jahr) ein<br>';
		
		if (!preg_match('/^([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)$/i',$email))	$fehler.='Bitte geben Sie Ihre Emailadresse ein<br>';
		if (!$agb) 				$fehler.='Bitte akzeptieren Sie die AGB durch Ankreuzen des Feldes<br>';
		
		
		if ($fehler == '') {
			// Zu MySql verbinden und richtige Datenbank wählen
			include 'config/inc_connect.php';
			
			// Check vorhanden Mailtabelle
			$vorhanden = 'n';
			$sql = "SELECT email,userstatus,usercode,ip_anmeldung FROM " . $tab_adr . " WHERE email = '" .  $email . "'";
			$erg = mysql_query($sql);
			
			if (mysql_num_rows($erg)) {
				$row = mysql_fetch_assoc($erg);
				$code 	= $row['usercode'];
				$realip = $row['ip_anmeldung'];
				if ($row['userstatus'] == 'aktiv') 			$fehler.='Email ist bereits gespeichert und nimmt am newsletter teil<br>';
				if ($row['userstatus'] == 'ausgetragen') 	$fehler.='Email ist für Neueintragungen gesperrt<br>';
				if ($row['userstatus'] == 'unbestaetigt')	$vorhanden='j';
			}
			
			if ($fehler == '') { 
				// Eingegebene Daten speichern
				$jetzt=strftime("%Y-%m-%d %H:%M:%S" );
				$anmeldedatum = substr($jetzt,8,2).'.'. substr($jetzt,5,2).'.'.substr($jetzt,0,4);
				$anmeldezeit = substr($jetzt,11,8);
				$gebdat = "$jjjj-$mm-$tt";
				
				if($vorhanden != 'j') { 
					$realip = getIP();
					mt_srand((double)microtime()*1000000);
					$id1 = mt_rand(0,100000);
					mt_srand((double)microtime()*1000000);
					$id2 = mt_rand(0,100000);
					$code = substr(md5($id1*$id2),0,14);				
					$sql_ins = "INSERT INTO 
									" . $tab_adr . " 
								SET 
									anrede 			= '" . mysql_real_escape_string($anrede) 		. "',
									vorname 		= '" . mysql_real_escape_string($vorname)		. "', 
									name 			= '" . mysql_real_escape_string($name)			. "', 
									email 			= '" . $email									. "', 
									geburtsdatum	= '" . mysql_real_escape_string($gebdat)		. "', 
									userstatus		= 'unbestaetigt', 
									usercode		= '" . mysql_real_escape_string($code)			. "', 
									newsletter		= '" . mysql_real_escape_string($newsletter)	. "', 
									
									dat_anmeldung	= '" . $jetzt 									. "', 
									agb			    = '" . mysql_real_escape_string($agb)      		. "',
									ip_anmeldung	= '" . mysql_real_escape_string($realip)		. "'";

					mysql_query($sql_ins) or die(mysql_error());
				}
				
				// Kontrollmail aussenden
				$text = lesen('_mail_kontrollmail.txt');
				$teile=explode('[TEILUNG]',$text);
				$subject = $teile[0];
				$message_text = $teile[1];
				
				$subject=str_replace('{email}',htmlspecialchars($email),$subject);
				$subject=str_replace('{code}',$code,$subject);
				$subject=str_replace('{anrede}',$anrede,$subject);
				$subject=str_replace('{vorname}',htmlspecialchars($vorname),$subject);
				$subject=str_replace('{name}',htmlspecialchars($name),$subject);

				$message_text=str_replace('{email}',$email,$message_text);
				$message_text=str_replace('{code}',$code,$message_text);
				$message_text=str_replace('{anrede}',$anrede,$message_text);
				$message_text=str_replace('{vorname}',htmlspecialchars($vorname),$message_text);
				$message_text=str_replace('{name}',htmlspecialchars($name),$message_text);
				$message_text=str_replace('{gewpfad}',$cfg['gewpfad'],$message_text);
				$message_text=str_replace('{ip}',htmlspecialchars($realip),$message_text);
				$message_text=str_replace('{zeit}',$anmeldezeit,$message_text);
				$message_text=str_replace('{datum}',$anmeldedatum,$message_text);
				
				$from=$cfg['kontrollmail'];
				$cc=$bcc='';
				// Der 5. Parameter in mail() funktioniert nicht bei safe mode = on
				// mail( "$email",  "$subject",  "$message_text",  "From:$from\nCC:$cc\nBCC:$bcc\n","-f$from"  );
				mail( "$email",  "$subject",  "$message_text",  "From:$from\nCC:$cc\nBCC:$bcc\n");
					
				$html = template('danke_anmeldung');
				
			
			}
			mysql_close($conn);
		}
		
	}

	// Selected-Codes für HTML-Liste "Anrede"
	$selected_nichts = $selected_frau = $selected_herr = '';
	if ($anrede == '0') {
		$selected_nichts	= $selcode;
	}
	if ($anrede == 'Frau') {
		$selected_frau		= $selcode;
	}
	if ($anrede == 'Herr') {
		$selected_herr		= $selcode;
	}
 
und Nr2
HTML:
	// Selected-Codes für HTML-Liste "Land"
	$selected_keinland = $selected_d = $selected_a = $selected_ch = $selected_s = '';
	if($land == '0') {
		$selected_keinland	= $selcode;
	}
	if($land == 'D') {
		$selected_d			= $selcode;
	}
	if($land == 'A') {
		$selected_a			= $selcode;
	}

	
	
	$html=str_replace('{antwort}',htmlspecialchars($antwort),$html);
	$html=str_replace('{email}',htmlspecialchars($email),$html);
	$html=str_replace('{kontrollmail}',$cfg['kontrollmail'],$html);
	$html=str_replace('{fehler}',$fehler,$html);
	$html=str_replace('{agbchecked}',htmlspecialchars($agb),$html);
	$html=str_replace('{vorname}',htmlspecialchars($vorname),$html);
	$html=str_replace('{name}',htmlspecialchars($name),$html);
	$html=str_replace('{selected_nichts}',$selected_nichts,$html);
	$html=str_replace('{selected_frau}',$selected_frau,$html);
	$html=str_replace('{selected_herr}',$selected_herr,$html);
	$html=str_replace('{selected_keinland}',$selected_keinland,$html);
	$html=str_replace('{selected_d}',$selected_d,$html);
	$html=str_replace('{selected_a}',$selected_a,$html);
	$html=str_replace('{vorwahl}',htmlspecialchars($vorwahl),$html);
	$html=str_replace('{telefon}',htmlspecialchars($telefon),$html);

	// Geburtsdatum 
	$tt_liste="<select name=\"tt\" class=\"anmfeldgd\" id=\"tt\" size=1>\n";
	$tt_liste.="<option value=0>--</option>\n";
	for ($i=1; $i<=31; $i++)
	{
		if ($i == $tt) {
			$selected = $selcode;
		} else {
			$selected="";
		}
		if ($i < 10) {
			$j = '0' . $i;
		} else {
			$j = $i;
		}
		$tt_liste.="<option value=$j $selected>$j</option>\n";
	}
	$tt_liste.="</select>\n";
	
	
	$mm_liste="<select name=\"mm\" class=\"anmfeldgd\" id=\"mm\" size=1>\n";
	$mm_liste.="<option value=0>--</option>\n";
	for ($i=1; $i<=12; $i++)
	{
		if ($i == $mm) {
			$selected="selected";
		} else {
			$selected = "";
		}
		if ($i < 10) {
			$j = '0' . $i;
		} else {
			$j = $i;
		}
		$mm_liste.="<option value=$j $selected>$j</option>\n";
	}
	$mm_liste.="</select>\n";

	$jjjj_liste="<select name=\"jjjj\" class=\"anmfeldgd\" id=\"jjjj\" size=1>\n";
	$jjjj_liste.="<option value=0>----</option>\n";
	for ($i=1920; $i<=1990; $i++)
	{
		if ($i==$jjjj) {
			$selected="selected";
		} else {
			$selected="";
		}
		$jjjj_liste.="<option value=$i $selected>$i</option>\n";
	}

	$jjjj_liste.="</select>\n";
	
	$html=str_replace('{tt}',$tt_liste,$html);
	$html=str_replace('{mm}',$mm_liste,$html);
	$html=str_replace('{jjjj}',$jjjj_liste,$html);

	break;

	case 'austragen':
	$html = template('austragen');	
	if ($_POST['submit']) {
		$fehler	= '';
		$email 	= eingabe('email');
		$email 	= strtolower($email);
		if(!preg_match('/^([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)$/i',$email)) {
			$fehler.='Bitte geben Sie Ihre Emailadresse ein';		
		}
		if (!$fehler) {
			// DB open
			include 'config/inc_connect.php';		
			$sql = "SELECT 
						email,
						userstatus 
					FROM " . 
						$tab_adr . " 
					WHERE 
						email='" . $email . "'";
			$erg=mysql_query($sql);
			
	
			if (mysql_num_rows($erg) == 0) { // Eintrag nicht gefunden
				$fehler.='Emailadresse nicht gefunden';
			} else {
				$row = mysql_fetch_assoc($erg);
				if ($row['userstatus'] == 'ausgetragen') { 
					$fehler.='Emailadresse war schon ausgetragen';
				}
			}
		}
		if (!$fehler) {
			// Austragen
			$realip = getIP();			
			$jetzt=strftime("%Y-%m-%d %H:%M:%S");
			$sql = "UPDATE 
						" . $tab_adr . " 
					SET 
						userstatus= 'ausgetragen',
						dat_abmeldung = '" . $jetzt. "',
						ip_abmeldung = '" . $realip . "' 
					WHERE 
						email = '" . $email . "'";
			mysql_query($sql);
			
			$html = template('ausgetragen');		
		}	

	}	

	$html=str_replace('{email}',htmlspecialchars($email),$html);	
	$html=str_replace('{fehler}',$fehler,$html);	
	break;

	case 'danke':
	$html = template('danke');
	break;

	case 'aut': // Bestätigungslink in Email geklickt: ?s=aut&email={email}&code={code}
	
	$email=$_GET['email'];
	$code=$_GET['code'];
	if (!preg_match('/^([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)$/i',$email)) {
		$email=''; // Unsinniger Parameter
	}
	
	if(strlen($code) != 14) {
		$code = ''; // Unsinniger parameter
	}
	
	if($email AND $code) {
		include 'config/inc_connect.php';
		$sql = "SELECT 
					email,
					usercode 
				FROM 
					" . $tab_adr . " 
				WHERE 
					email='" . $email . "' 
				AND 
					usercode='". mysql_real_escape_string($code) . "' 
				AND 
					userstatus = 'unbestaetigt'";
		
		$erg=mysql_query($sql);

		if (mysql_num_rows($erg)) { // Eintrag gefunden
			
			$fehler='';
			$realip = getIP();
			$jetzt=strftime("%Y-%m-%d %H:%M:%S");

			$sql_upd = "UPDATE 
							" . $tab_adr . " 
						SET 
							userstatus = 'aktiv',
							dat_aut = '". $jetzt . "',
							ip_aut = '" . $realip . "'
						WHERE 
							email='" . $email . "' 
						AND 
							usercode='". mysql_real_escape_string($code) . "'";
			mysql_query($sql_upd);
			
			$fehler='Ihr Eintrag ist bestätigt.';
		} else {
			$fehler='Fehler: Emailadresse oder ID-Code nicht gefunden.<br>Bitte kopieren Sie ggf. den kompletten Link aus der Email in die Adresszeile Ihres Browsers.';
		}
	} else {
		$fehler = 'Falscher Programmaufruf';
	}

	$html = template('eingetragen');
	$html=str_replace('{fehler}',$fehler,$html);
	break;


}

echo $html;
?>
[/HTML]
 
Zurück
Oben