Anmeldemaske übergibt Daten nicht

ebs-smf

Mitglied
Servus,

ich habe eine Anmeldemaske, in die man Daten eingibt. Die sollen dann einmal in eine MySql-Tabelle übergeben werden und parallel in eine data.txt geschrieben werden. Das fuktioniert auch mit fast allen Daten. Nur zwei Felder wrden nicht anständig übergeben. es handelt sich um die Felder "uni" und "position". Ich habe jetzt mit meinen begrenzten Fähigkeiten rund 3 Stunden danach gesucht, kann es aber nicht finden. Der grund für den unaufgeräumten Sourcecode ist, daß diese Anmeldung nach und nach entstanden ist und von mehrere, verschiedenen Programmierern gecoded wurde.

Bitte helft mir und sagt mir, warum das nicht klappt. Ich hänge euch mal die (meiner Meinung nach) relevanten Sourcecodes an.

Viele Grüße

registration.inc
PHP:
<br>
<br>

<table class="innentb">
        <tr>
                <td class="td8">
                        <div align="justify">
                                <!-- german content integration start -->
Sehr geehrte Interessenten,<br>
eine Teilnahme an diesem Event ist nur für Professionals aus den Bereichen SCM & Logistik und aktuell eingeschriebene Studenten möglich. Unzutreffende Anmeldungen werden dementsprechend nicht berücksichtigt. Die Teilnahme am gesamten Event ist kostenlos.<br>
<br>
Felder mit * sind Pflichtfelder

                                <!-- german content integration end -->
                            </div>
                </td>
                <td class="td9"></td>
                <td class="td10">
                        <div align="justify">
                                <!-- engl content integration start -->
Dear ladies and gentlemen,<br>
a participation in this event is only possible for professionals in SCM or logistics as well as for currently enrolled students. Improper registrations will not be considered. The participation in the whole event is free.
<br>
<br>
<br>
Fields with * are required
                                <!-- engl content integration end -->
                        </div>

                </td>
        </tr>
</table>
<br>
<br>

<script language="JavaScript">
function change_job() {
  if(document.all.job[0].checked==true) {
    document.all.posi.innerHTML="specialization";
    document.all.comp.innerHTML="semester";
	document.all.uni.innerHTML="university";
	document.all.uni2.innerHTML="<input type='text' name='uni' class='textb1'> *";
	document.all.stern.innerHTML="";
	document.all.stern2.innerHTML=" *";
   } else {
    document.all.posi.innerHTML="position / department";
    document.all.comp.innerHTML="company";
	document.all.uni.innerHTML="";
	document.all.uni2.innerHTML="";
	document.all.stern.innerHTML=" *";
	document.all.stern2.innerHTML="";
  }
}
</script>

<!-- start registration form -->
<form enctype='multipart/form-data' action='process.php' method='post'>
<table class="regtab">
<tr>
          <td class="regtd2"></td>
        <td class="regtd3">
		<input type="radio" name="job" value="Student" checked onclick="javascript:change_job()">Student
		<?php
		$dbhost = "localhost";
		$dbuser = "user";
		$dbname = "dbname";
		$dbpass = "passwort";
		$table = "REGISTER";
		$verbindung = mysql_connect($dbhost,$dbuser,$dbpass) or die( "Unable to connect to database");
		@mysql_select_db($dbname,$verbindung);
		$query = "SELECT job FROM $table WHERE job='Student'";
		$result=mysql_query($query)or die(mysql_error());
		$anz=mysql_num_rows($result);
		mysql_close($verbindung);
		if($anz<=125){
			echo "<input type='radio' value='Professional' name='job' onclick='javascript:change_job()'>Professional";
		}
		?>
		</td>
</tr><tr>
          <td class="regtd2"></td>
        <td class="regtd3"><select name='gender'><option value='select...'>Select...<option value='mr'>Mr<option value='mrs'>Mrs</select></td>
</tr><tr>
          <td class="regtd2" bgcolor="#E5E5E5">title</td>
        <td class="regtd3" bgcolor="#E5E5E5"><input type=text name='titel' class="textb1"></td>
</tr><tr>
          <td class="regtd2">last name</td>
        <td class="regtd3"><input type=text name='name' class="textb1"> *</td>
</tr><tr>
          <td class="regtd2" bgcolor="#E5E5E5">first name</td>
        <td class="regtd3" bgcolor="#E5E5E5"><input type=text name='surname' class="textb1"> *</td>
</tr><tr>
          <td class="regtd2" style="height:20px">
		  <?php
				if($_GET['err']=="mustuni"){
					echo "
					<span style='font-weight:bold;color:red' id='uni'>university</span>
					<td class='regtd3' id='uni3'>
					<input type='text' name='uni' class='textb1'>
					<span style='font-weight:bold;color:red' id='uni2'> *</span>
					</td>
				";}
				elseif($_GET['err']==""||!$_GET['err']){
					echo "
					<span id='uni'>university</span>
					<td class='regtd3' id='uni2'>
						<input type='text' name='uni' class='textb1'> *
					</td>
					";}
			?>
		 </td>
</tr><tr>
          <td class="regtd2" bgcolor="#E5E5E5"><span id="comp">semester</span></td>
        <td class="regtd3" bgcolor="#E5E5E5"><input type=text name='company' class="textb1"> *</td>
</tr><tr>
          <td class="regtd2"><span id="posi">specialization</span></td>
        <td class="regtd3"><input type=text name='position' class="textb1" id="position">  <span id="stern"></span></td>
</tr><tr>
          <td class="regtd2" bgcolor="#E5E5E5">email</td>
        <td class="regtd3" bgcolor="#E5E5E5"><input type=text name='email' class="textb2"> *</td>
</tr><tr>
          <td class="regtd2">phone</td>
        <td class="regtd3"><input type=text name='tel' class="textb1"></td>
</tr><tr>
          <td class="regtd2" bgcolor="#E5E5E5">mobile</td>
        <td class="regtd3" bgcolor="#E5E5E5"><input type=text name='mobile' class="textb1"></td>
</tr><tr>
          <td class="regtd2">street</td>
        <td class="regtd3"><input type=text name='street' class="textb2"> *</td>
</tr><tr>
          <td class="regtd2" bgcolor="#E5E5E5">zipcode</td>
        <td class="regtd3" bgcolor="#E5E5E5"><input type=text name='zipcode' class="textb1"> *</td>
</tr><tr>
          <td class="regtd2">city</td>
        <td class="regtd3"><input type=text name='city' class="textb1"> *</td>
</tr><tr>
          <td class="regtd2" bgcolor="#E5E5E5">additional notice</td>
                 <td class="regtd3" bgcolor="#E5E5E5"><input type=text name='notice' class="textb3"></td>
</tr><tr>
        <td class="regtd2">
			<?php
				if($_GET['err']=="must"){
					echo "<span style='font-weight:bold;color:red'>upload cv (max. 2mb)</span>";
				}
				elseif($_GET['err']==""||!$_GET['err']||$_GET['err']=""){
					echo "upload cv (max. 2mb)";
				}
			?>
		</td>
         <td class="regtd3"><input type='file' name='datei' class="textb3"> <span id="stern2"> *</span></td>
</tr><tr>
         <td class="regtd2"></td>
         <td class="regtd3"><input type="checkbox" name='diner' value="YES">I will  obliging participate in the dinner</td>
<tr></tr>
          <td class="regtd2"></td>
          <td class="regtd3"><input type="checkbox" name='hotel' value="YES">Please contact me for hotel booking</td>
</tr><tr>
         <td class="regtd2"></td>
         <td class="regtd3"><input type="checkbox" name='agb' value="ACCEPT"><b><font color="#AC022D">I read and accepted the <a href="javascript:open_window('rules.html',600,400);">conditions of participation</a></font></b></td>
</tr><tr>
          <td class="regtd1" colspan="2"><br><div align="center"><input type=submit value='submit form'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type=reset value='reset form'></div></td>
</tr>
</table>
</form>





process.php
PHP:
<?php
session_start();
include("global.inc");
$feld_error=false;
$datei_error=false;
$error="The following errors occured while processing your form input. Please try again.<ul>";
pt_register('POST','job');
pt_register('POST','gender');
pt_register('POST','titel');
pt_register('POST','name');
pt_register('POST','surname');
pt_register('POST','uni');
pt_register('POST','company');
pt_register('POST','position');
pt_register('POST','email');
pt_register('POST','tel');
pt_register('POST','mobile');
pt_register('POST','street');
pt_register('POST','zipcode');
pt_register('POST','city');
pt_register('POST','notice');
pt_register('POST','hotel');
pt_register('POST','diner');
pt_register('POST','agb');
$datei=$HTTP_POST_FILES['datei'];
if($job=="Student"){
	if(empty($uni)||!$uni||$uni=""){
		header("Location: http://www.ebs-smf.de/index.php?id=registration&err=mustuni");
		die();
	}
	if(empty($_FILES["datei"])||!$_FILES["datei"]||$_FILES["datei"]=""||!isset($_FILES["datei"])){
		header("Location: http://www.ebs-smf.de/index.php?id=registration&err=must");
		die();
	}
}
if($name=="" || $surname=="" || $email=="" || $street=="" || $zipcode=="" || $city=="" || $agb=="" || $company=="" || $position="" ){
	$feld_error=true;
	$error.="<li>You did not enter one or more of the required fields. Please go back and try again.";
}

if($HTTP_POST_FILES['datei']['tmp_name']!=""){
	$MAX_SIZE = 1000000;
	$FILE_MIMES = array('application/pdf','application/msword');
	$FILE_EXTS  = array('.pdf','.doc');
	$file_type = $HTTP_POST_FILES['datei']['type'];
	$file_name = $HTTP_POST_FILES['datei']['name'];
	$file_ext = strtolower(substr($file_name,strrpos($file_name,".")));

	//File Size Check
	if ( $HTTP_POST_FILES['userfile']['size'] > $MAX_SIZE)
	{
 	 $datei_error=true;
	}
 	//File Type/Extension Check
	if (!in_array($file_type, $FILE_MIMES) && !in_array($file_ext, $FILE_EXTS) ){
	 $datei_error=true;
	}

}else if(!is_uploaded_file($HTTP_POST_FILES['datei']['tmp_name'])){
$datei_error=true;
}

if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email)){
	$error.="<li>Invalid email address entered";
	$feld_error=true;
}
if($feld_error) echo $error;
if(!$datei_error) {
	$image_part = $HTTP_POST_FILES['datei']['name'];
	$image_list[12] = $image_part;
	$image_part = strrchr($image_part,".");
	$image_part = $name.'_'.$surname.$image_part;
	@copy($HTTP_POST_FILES['datei']['tmp_name'], "cv/".$image_part);
}
if (!$feld_error){
	$where_form_is="http".($HTTP_SERVER_VARS["HTTPS"]=="on"?"s":"")."://".$SERVER_NAME.strrev(strstr(strrev($PHP_SELF),"/"));
	$dbhost="localhost";
	$dbuser="user";
	$dbname="dbname";
	$dbpass="passwort";
	$table="REGISTER";
	$verbindung=mysql_connect($dbhost,$dbuser,$dbpass) or die( "Unable to select database");
	@mysql_select_db($dbname,$verbindung);
	$query = "
	INSERT INTO $table
	(job,gender,titel,name,surname,uni,company,position,email,tel,mobile,street,zipcode,city,notice,hotel,diner,agb)
	VALUES
	(
	'$job',
	'$gender',
	'$titel',
	'$name',
	'$surname',
                '$uni',
	'$company',
	'$position',
	'$email',
	'$tel',
	'$mobile',
	'$street',
	'$zipcode',
	'$city',
	'$notice',
	'$hotel',
	'$diner',
	'$agb'
	)";
	mysql_query($query) or die(mysql_error());
	mysql_close();
	$make=fopen("admin/data.dat","a");
	$to_put="";
	$to_put .= $job."|".$gender."|".$titel."|".$name."|".$surname."|".$uni."|".$company."|".$position."|".$email."|".$tel."|".$mobile."|".$street."|".$zipcode."|".$city."|".$notice."|".$hotel."|".$diner."|".$agb."|".$image_part."
	";
	fwrite($make,$to_put);

	// Mail verschicken
	$text="
Sehr geehrter Teilnehmer,<br>
<br>
Sie wurden mit unten stehenden Daten zum ebs Supply Management Forum 2007 angemeldet.<br>
<b>Bitte beachten Sie, da&szlig; die Anmeldung f&uuml;r Studenten noch keine verbindliche Zusage bedeutet, da es ein Auswahlverfahren geben wird, sobald die Anmeldungen die zur Verf&uuml;gung stehenden Kapazit&auml;ten &uuml;bersteigen.</b> <br>
<br>
Unter <a href='http://www.ebs-smf.de/index.php?id=programm07'>Programm</a> finden Sie stets das aktualisierte Programm.<br>
<br>
Bitte wenden Sie sich bei Fragen an folgende Email Adressen:<br>
<br>
Teilnehmer: caren.strahl@ebs-smf.de<br>
Registrierung: registration@ebs-smf.de<br>
Allgemeine Informationen: info@ebs-smf.de<br>
<br>
<br>

Wir freuen uns, Sie am 30. M&auml;rz auf dem Campus begr&uuml;&szlig;en zu d&uuml;rfen.<br>
<br>
Mit freundlichen Gr&uuml;&szlig;en<br>
ebs Supply Management Forum e.V.<br>
<br>

<br>
<br>
Ihre Anmeldedaten:<br>

<table>
<tr><td></td><td>$job</td></tr>
<tr><td></td><td>$gender</td></tr>
<tr><td>title: </td><td>$titel</td></tr>
<tr><td>last name: </td><td>$name</td></tr>
<tr><td>first name: </td><td>$surname</td></tr>
<tr><td>University: </td><td>$uni</td></tr>
<tr><td>company: </td><td>$company</td></tr>
<tr><td>position: </td><td>$position</td></tr>
<tr><td>email: </td><td>$email</td></tr>
<tr><td>phone: </td><td>$tel</td></tr>
<tr><td>mobile: </td><td>$mobile</td></tr>
<tr><td>street: </td><td>$street</td></tr>
<tr><td>zipcode: </td><td>$zipcode</td></tr>
<tr><td>city: </td><td>$city</td></tr>
<tr><td>additional message: </td><td>$notice</td></tr>
<tr><td>Hotel: </td><td>$hotel</td></tr>
<tr><td>Diner: </td><td>$diner</td></tr>
<tr><td>restrictions accepted: </td><td>$agb</td></tr>
</table>
	";                  #Inhalt
	$betreff="Anmelde-Bestätigung";   #Betreff
	$headerstwo.="Content-type: text/html; charset=utf-8\n";
	$headerstwo.="Content-Transfer-Encoding: 8bit\n";
	$headerstwo.="From: ebs Supply Management Forum e.V.<registration@ebs-smf.de>\r\n";
	$headerstwo.="Reply-To: ebs Supply Management Forum e.V.<registration@ebs-smf.de>\r\n";
	$headerstwo.="X-Priority: 1\n";
	$headerstwo.="X-MSMail-Priority: High\n";
	$headerstwo.="X-Mailer: PHP/" .phpversion()."\n";
	$betreff="Bestätigung";
	mail($email,$betreff,$text,$headerstwo);

	$_SESSION['job']=$job;
	$_SESSION['gender']=$gender;
	$_SESSION['titel']=$titel;
	$_SESSION['name']=$name;
	$_SESSION['surname']=$surname;
         $_SESSION['uni']=$uni;
	$_SESSION['company']=$company;
	$_SESSION['position']=$position;
	$_SESSION['email']=$email;
	$_SESSION['tel']=$tel;
	$_SESSION['mobile']=$mobile;
	$_SESSION['street']=$street;
	$_SESSION['zipcode']=$zipcode;
	$_SESSION['city']=$city;
	$_SESSION['notice']=$notice;
	$_SESSION['hotel']=$hotel;
	$_SESSION['diner']=$diner;
	$_SESSION['agb']=$agb;
	$_SESSION['image_name']=$image_name;
	header("Location: http://www.ebs-smf.de/index.php?id=sucf");
}
?>


Viele Grüße
Constantin
 
Zuletzt bearbeitet:
Ändere mal bitte deinen Beitrag und setz den PHP Code zwischen die [ PHP ] Tags anstatt den Code Tags dadurch wird er etwas übersichtlicher.
 
Könntest du eventuell auch die Struktur deiner DB Posten und etwas genauer erläutern was es genau mit den Feldern "uni" und "position" nicht funktioniert.
Ich vermute aber mal das du registered_globals auf off hast. Ausserdem kann ich mit der Funktion "pt_register" aus der process.php nichts anfangen. Poste doch bitte auch mal diese.
 
In der Maske von registration.inc werden Daten eingegeben. Die werden dann an die process.php übergeben. Die process.php speichert die Daten dann einmal in der mysql-Db und einmal in einer data.txt (o.ä.). Es werden auch alle Daten übergeben und abgespeichert. Außer eben den Daten aus dem Feld "position" und "uni".

Ich habe das ganze nicht programmiert. Daher weiß ich auch nicht, was welche Tags bedeuten.

Viele Grüße
Constantin
 
Wie gesagt poste mal die DB Struktur der Tabelle in der die Daten gespeichert wird und poste mir den Quelltext der die Funktion pt_register definiert.
 
Wo finde ich das beides? Bzw. wie gebe ich das weiter?
Ich muß leider gestehen, daß ich nicht ganz verstehe, was Du da brauchst, bzw. wo ich das finde.

Viele Grüße
Constantin
 
Also das mit pt_register ist eine Funktion die in einer php Datei definiert wurde. Es sollte etwa so aussehen
PHP:
<?php
//evtl irgendein PHP Code
function pt_register ()//in der Runden Klammer können Variablen definiert sein
{
//PHP Code
}

//evtl. irgendein PHP Code
?>

Die Struktur der Tabelle in der Datenbank kannst du dir über ein Tool wie phpMyAdmin anzeigen lassen. Dort suchst du dann nach der Tabelle in der du die Daten wie uni usw speicherst und postest den aufbau etwa so:
Code:
CREATE TABLE `1_users` (
  `ID` int(11) NOT NULL auto_increment,
  `nickname` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `registerdate` varchar(255) NOT NULL,
  `activeated` int(1) NOT NULL,
  `authcode` varchar(32) NOT NULL,
  PRIMARY KEY  (`ID`)
);
wobei eigentlich nur interessant ist wie jedes Feld defniert ist also z.B. ID: INT(11) NOT NULL.
Ich hoffe du verstehst jetzt was ich mein bzw wissen muß um dir zuhelfen.
 
Hi,

ok, nun habe ich es verstanden. Zuerst der PhP-code für das register:

global.inc

PHP:
<?php

function pt_register()
{
  $num_args = func_num_args();
   $vars = array();

   if ($num_args >= 2) {
       $method = strtoupper(func_get_arg(0));

       if (($method != 'SESSION') && ($method != 'GET') && ($method != 'POST') && ($method != 'SERVER') && ($method != 'COOKIE') && ($method != 'ENV')) {
           die('The first argument of pt_register must be one of the following: GET, POST, SESSION, SERVER, COOKIE, or ENV');
     }

       $varname = "HTTP_{$method}_VARS";
      global ${$varname};

       for ($i = 1; $i < $num_args; $i++) {
           $parameter = func_get_arg($i);

           if (isset(${$varname}[$parameter])) {
               global $$parameter;
               $$parameter = ${$varname}[$parameter];
          }

       }

   } else {
       die('You must specify at least two arguments');
   }

}

?>

und die Mysql-Tabelle:

Code:
CREATE TABLE `REGISTER` (
  `ID` int(11) NOT NULL auto_increment,
  `job` varchar(20) NULL,
  `gender` varchar(5) NULL,
  `titel` varchar(10) NULL,
  `name` varchar(30) NULL,
  `surname` varchar(30) NULL,
  `uni` varchar(40) NULL,
  `company` varchar(30) NULL,
  `position` varchar(30) NULL,
  `email` varchar(30) NULL,
  `tel` varchar(20) NULL,
  `mobile` varchar(20) NULL,
  `street` varchar(35) NULL,
  `zipcode` varchar(10) NULL,
  `city` varchar(25) NULL,
  `notice` varchar(40) NULL,
  `agb` varchar(4) NULL,
  `hotel` char(3) NULL,
  `diner` char(3) NULL,
  `path` varchar(20) NULL,
  PRIMARY KEY  (`ID`)
);

Viele Grüße
Constantin
 
Zuletzt bearbeitet:
Kann Dir nur raten aus Sicherheitsgründen Deine Query zu ändern.
Falls Du diesen Rat nicht beherzigst, ist Deine Anwendung anfällig
für SQL Code-Einschleusung.

Prüfe bitte ob register_globals -Einstellungen auf "on" gestellt ist.
Wenn ja arbeite nicht mit den veralteten vordefinierten PHP-Arrays ($HTTP_*_VARS)!
Dann kannst Du auch die Funktion "pt_register" aus dem Script entfernen
Seit PHP 4.1.0 stehen superglobale Arrays wie $_GET, $_POST,$_SERVER, etc. zur Verfügung.

Fehlerbehandlung mit "error_reporting(E_ALL)"! Immer am Anfang jedes Script einsetzen!

Ausgaben prüfen mit VAR_DUMP, Beispiel("var_dump($_POST)")!

PHP:
$query ="INSERT INTO 
                     `register`
         VALUES
                    ('',
                     '".mysql_real_escape_string($_POST['job'])."',
                     '".mysql_real_escape_string($_POST['gender'])."',
                     '".mysql_real_escape_string($_POST['titel'])."',
                     '".mysql_real_escape_string($_POST['name'])."',
                     '".mysql_real_escape_string($_POST['surname'])."',
                     '".mysql_real_escape_string($_POST['uni'])."',
                     '".mysql_real_escape_string($_POST['company'])."',
                     '".mysql_real_escape_string($_POST['position'])."',
                     '".mysql_real_escape_string($_POST['email'])."',
                     '".mysql_real_escape_string($_POST['tel'])."',
                     '".mysql_real_escape_string($_POST['mobile'])."',
                     '".mysql_real_escape_string($_POST['street'])."',
                     '".mysql_real_escape_string($_POST['zipcode'])."',
                     '".mysql_real_escape_string($_POST['city'])."',
                     '".mysql_real_escape_string($_POST['notice'])."',
                     '".mysql_real_escape_string($_POST['hotel'])."',
                     '".mysql_real_escape_string($_POST['diner'])."',
                     '".mysql_real_escape_string($_POST['agb'])."',
                     '".mysql_real_escape_string($_POST['path'])."')
        ";
 
Hi,
irgendwie isses noch nicht ganz vorgedrungen, daß ich ein absoluter Programmier DAU bin :-)

Also erstmal meine Fragen:

Was ist den immer ein Query?
Wo prüfe ich das mit dem globals?
An welchem Script muß ich wo was einfügen?


Danke für Eure Hilfe!

Viele Grüße
Constantin
 
Zurück