Zur Navigation

Registrierungsseite wird gleich auf Loginseite weitergeleitet

1 andehrl

hallo, ich habe diese registrierungsseite erstellt. bisher hat sie auch gut funktioniert. jetzt ist es aber plötzlich so, dass ich beim aufrufen der seite sofort weitergeleitet werde auf die seite, die nach einer erfolreichen registrierung folgen würde (8cSieSindEingeloggt.php). ich habe als nutzer also gar keine möglichkeit mehr mich zu registrieren.
der code der registrierungseite sieht so aus:

<?php require_once('Connections/Registrierung.php');?>
<?php
mysql_select_db($database_Registrierung, $Registrierung);
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

session_start();
$error = '';
if (isset($_SESSION['captcha_spam']) && $_POST["sicherheitscode"] == $_SESSION['']) {
    $error = '';
} else {
     
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "einfache registrierung")) {


$result = mysql_query("SELECT nutzername FROM login WHERE nutzername = '" . mysql_real_escape_string($_POST['nutzername']) . "'");
if (mysql_num_rows($result) > 0) {
    $error .= 'Dieser Nutzername ist bereits vergeben. Bitte versuchen Sie es mit einem anderen Namen.<br/><br/>';
    } 
	
    $result = mysql_query("SELECT mail FROM login WHERE mail = '" . mysql_real_escape_string($_POST['mail']) . "'");
    if (mysql_num_rows($result) > 0) {
        $error .= 'Diese Emailadresse ist bereits vergeben. Bitte versuchen Sie es mit einer anderen E-Mail.<br/><br/>';
    }
	
	if (isset($_SESSION['captcha_spam']) && $_POST["sicherheitscode"] != $_SESSION['captcha_spam']) {
    $error .= 'Der Sicherheitscode ist falsch<br/>';
    } 

	echo mysql_error();
}
echo mysql_error();



if (isset($_POST['nutzername'])) {
    $nutzername = htmlspecialchars($_POST['nutzername']);
    } else {
       $nutzername = '';
    }
	
if (isset($_POST['passwort'])) {
    $passwort = htmlspecialchars($_POST['passwort']);
    } else {
      $passwort = '';
    }
	
if (isset($_POST['passwort2'])) {
    $passwort2 = htmlspecialchars($_POST['passwort2']);
    } else {
      $passwort2 = '';
    }
	
if (isset($_POST['handy'])) {
    $handy = htmlspecialchars($_POST['handy']);
    } else {
      $handy = '';
    }
	
if (isset($_POST['mail'])) {
    $mail = htmlspecialchars($_POST['mail']);
    } else {
      $mail = '';
    }




if ($error == "") {
    $insertSQL = sprintf("INSERT INTO login (vornachname, nutzername, passwort, mail, handy) VALUES (%s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['vornachname'], "text"),
                       GetSQLValueString($_POST['nutzername'], "text"),
                       GetSQLValueString($_POST['passwort'], "text"),
                       GetSQLValueString($_POST['mail'], "text"),
                       GetSQLValueString($_POST['handy'], "text"));
  
  $Result1 = mysql_query($insertSQL, $Registrierung) or die(mysql_error());

   $insertGoTo = "8cSieSindEingeloggt.php";
   if (isset($_SERVER['QUERY_STRING'])) {
   $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
   $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
}


// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['nutzername']) && empty($error)) {
  $loginUsername=$_POST['nutzername'];
  $password=$_POST['passwort'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "8cSieSindEingeloggt.php";
  $MM_redirectLoginFailed = "8bMeinkontologinfehlgeschlagen.php";
  $MM_redirecttoReferrer = true;
  
  $LoginRS__query=sprintf("SELECT nutzername, passwort FROM login WHERE nutzername=%s AND passwort=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
   
  $LoginRS = mysql_query($LoginRS__query, $Registrierung) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;	      

    if (isset($_SESSION['PrevUrl']) && true) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>

und weiter unten kommt dann noch dieser teil.

<form id="einfache registrierung" name="einfache registrierung" method="POST" action="<?php echo $editFormAction; ?><?php echo $loginFormAction; ?>">
      <table width="524" height="568" border="0" cellspacing="0" bgcolor="#E1E2BC">
        <tr class="registri">
          <td height="25" align="right">&nbsp; </td>
          <td height="25" colspan="5" align="left" valign="middle"><?php
if ($error != '') { 
    echo '<p>' . $error . '</p>';
}
?></td>
          <td width="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="47" align="right" valign="middle">&nbsp;</td>
          <td width="131" height="68" align="right" valign="middle"><span class="Stil20">nutzername</span></td>
          <td width="6">&nbsp;</td>
          <td height="68" colspan="2" align="left" valign="middle"><span id="sprytextfield1">
            <label>
              <input name="nutzername" type="text" id="nutzername" maxlength="20" value="<?php echo $nutzername ?>"/>
              <span class="Stil24">*</span></label>
          </span></td>
          <td width="5">&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        
        <tr>
          <td align="right" valign="middle" bgcolor="#F0EEDB">&nbsp;</td>
          <td height="67" colspan="5" align="center" valign="middle" bgcolor="#F0EEDB" class="ergebnisschrift">Bitte verwenden Sie f&uuml;r Ihr passwort 8 bis 15 Zeichen. Die Zeichen sollten m&ouml;glichst aus Gro&szlig;- und Kleinbuchstaben sowie Zahlen bestehen</td>
          <td bgcolor="#F0EEDB">&nbsp;</td>
        </tr>
        <tr>
          <td align="right" valign="middle">&nbsp;</td>
          <td height="21" align="right" valign="middle">&nbsp;</td>
          <td>&nbsp;</td>
          <td height="21" align="left" valign="middle">&nbsp;</td>
          <td height="21" align="left" valign="middle">&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td align="right" valign="middle">&nbsp;</td>
          <td height="33" align="right" valign="middle"><span class="Stil20">passwort</span></td>
          <td>&nbsp;</td>
          <td width="295" height="24" align="left" valign="middle"><label></label>
            <span id="sprytextfield2">
            <label>
              <input name="passwort" type="password" id="passwort" maxlength="15" value="<?php echo $passwort ?>"/>
              <span class="Stil24">*</span><span class="textfieldMinCharsMsg"><br />
              Bitte  8-15 Zeichen verwenden.</span></label>
            </span></td>
          <td width="2" height="24" align="left" valign="middle">&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        
        <tr>
          <td align="right">&nbsp;</td>
          <td height="33" align="right"><span class="Stil20">passwort wdh</span></td>
          <td>&nbsp;</td>
          <td height="24" colspan="2" align="left" valign="middle"><span id="spryconfirm1">
            <input name="passwort2" type="password" id="passwort2" maxlength="15" value="<?php echo $passwort2 ?>"/>
          </span><span class="Stil24">*</span></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td align="right">&nbsp;</td>
          <td height="33" align="right">&nbsp;</td>
          <td>&nbsp;</td>
          <td height="24" colspan="2" align="left" valign="middle">&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td align="right">&nbsp;</td>
          <td height="33" align="right"><span class="Schriftangaben">tel/handy</span></td>
          <td>&nbsp;</td>
          <td height="24" colspan="2" align="left" valign="middle"><span id="sprytextfield4">
            <input name="handy" type="text" id="handy" maxlength="50" value="<?php echo $handy ?>"/>
            </span><span class="Stil24">*</span></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td align="right">&nbsp;</td>
          <td height="33" align="right"><span class="Schriftangaben">mail</span></td>
          <td>&nbsp;</td>
          <td height="24" colspan="2" align="left" valign="middle"><span id="sprytextfield5">
          <label>
            <input name="mail" type="text" id="mail" maxlength="50" value="<?php echo $mail ?>"/>
            <span class="Stil24">*</span></label>
          </span></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td align="right">&nbsp;</td>
          <td height="33" align="right">&nbsp;</td>
          <td>&nbsp;</td>
          <td height="24" colspan="2" align="left" valign="middle">&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td align="right">&nbsp;</td>
          <td height="33" align="right">&nbsp;</td>
          <td>&nbsp;</td>
          <td height="24" colspan="2" align="left" valign="middle"><img src="captcha/captcha.php" border="0" title="Sicherheitscode"></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td align="right">&nbsp;</td>
          <td height="33" align="right">&nbsp;</td>
          <td>&nbsp;</td>
          <td height="24" colspan="2" align="left" valign="middle"><span id="sprytextfield3">
            <input type="text" name="sicherheitscode" size="19" />
            <span class="Stil24">*</span>          </span></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td align="right">&nbsp;</td>
          <td height="26" colspan="4" align="center" valign="middle" class="ergebnisschrift">Bitte tragen Sie den Sicherheitscode in das Feld ein</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr class="registri">
          <td height="28" align="left">&nbsp;</td>
          <td height="28" colspan="5" align="left">&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td align="right">&nbsp;</td>
          <td height="26" align="right">&nbsp;</td>
          <td>&nbsp;</td>
          <td colspan="2" align="right" valign="middle"><label>
            <input type="reset" name="Submit" value="Zur&uuml;cksetzen" />
          </label>
            <input name="abschicken" type="submit" id="abschicken" value="Senden" /></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td align="right">&nbsp;</td>
          <td height="21" align="right">&nbsp;</td>
          <td>&nbsp;</td>
          <td colspan="2" align="right" valign="top">&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td height="21" colspan="2" align="left" valign="top" bgcolor="#FFFFFF"><span class="Stil24">*</span> <span class="Stil28">pflichtfelder </span></td>
          <td bgcolor="#FFFFFF">&nbsp;</td>
          <td colspan="2" align="left" valign="middle" bgcolor="#FFFFFF">&nbsp;</td>
          <td bgcolor="#FFFFFF">&nbsp;</td>
          <td bgcolor="#FFFFFF">&nbsp;</td>
        </tr>
      </table>
      <p>&nbsp;</p>
      <input type="hidden" name="MM_insert" value="einfache registrierung" />
    </form>

was muss ich verändern, bzw warum funktioniert es plötzlich nicht mehr???

13.12.2010 18:27

2 Jörg Kruse

Um diese Frage beantworten zu können, muss man schauen, wie die Bedingungsblöcke ineinander verschachtelt sind - und dazu ist es ungemein hilfreich, wenn der Code entsprechend eingerückt ist. Du kannst hierzu auch einen PHP-Formatierer wie diesen hier verwenden, der das automatisiert macht.

Verantwortlich für die Weiterleitung ist vermutlich dieser Abschnitt:

if ($error == "") {
    $insertSQL = sprintf("INSERT INTO login (vornachname, nutzername, passwort, mail, handy) VALUES (%s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['vornachname'], "text"),
                       GetSQLValueString($_POST['nutzername'], "text"),
                       GetSQLValueString($_POST['passwort'], "text"),
                       GetSQLValueString($_POST['mail'], "text"),
                       GetSQLValueString($_POST['handy'], "text"));
  
  $Result1 = mysql_query($insertSQL, $Registrierung) or die(mysql_error());

   $insertGoTo = "8cSieSindEingeloggt.php";
   if (isset($_SERVER['QUERY_STRING'])) {
   $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
   $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
}

Dieser sollte wohl besser innerhalb dieses Blocks stehen:

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "einfache registrierung")) {
    /* ... */
}

Das musst du entsprechend ändern.

Und dieser if-else-Block macht keinen Sinn - den würde ich entfernen (den Inhalt im else Bereich dabei natürlich stehen lassen):

if (isset($_SESSION['captcha_spam']) && $_POST["sicherheitscode"] == $_SESSION['']) {
    $error = '';
} else {
    /* ... */
}

13.12.2010 22:03 | geändert: 13.12.2010 22:06

3 andehrl

danke für den link, sehr praktisch. kann ich header(sprintf("Location: %s", $insertGoTo)); einfach an dieser stelle hier einsetzten?

      if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "einfache registrierung")) {
          $result = mysql_query("SELECT nutzername FROM login WHERE nutzername = '" . mysql_real_escape_string($_POST['nutzername']) . "'");
          if (mysql_num_rows($result) > 0) {
              $error .= 'Dieser Nutzername ist bereits vergeben. Bitte versuchen Sie es mit einem anderen Namen.<br/><br/>';
          }
          
          $result = mysql_query("SELECT mail FROM login WHERE mail = '" . mysql_real_escape_string($_POST['mail']) . "'");
          if (mysql_num_rows($result) > 0) {
              $error .= 'Diese Emailadresse ist bereits vergeben. Bitte versuchen Sie es mit einer anderen E-Mail.<br/><br/>';
          }
          
          if (isset($_SESSION['captcha_spam']) && $_POST["sicherheitscode"] != $_SESSION['captcha_spam']) {
              $error .= 'Der Sicherheitscode ist falsch<br/>';
          }
          
          header(sprintf("Location: %s", $insertGoTo));
		  
          echo mysql_error();
      }
      echo mysql_error();

13.12.2010 22:24 | geändert: 13.12.2010 22:35

4 Jörg Kruse

Nein, so geht das nicht - erstens fehlt dir hier die Variable $insertGoTo und zweitens solltest du erst weiterleiten, wenn du mit allem anderen fertig bist - sonst wird nämlich die Registrierung nicht in die Datenbank eingetragen.

Du musst einfach nur die Klammern richtig setzen.

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "einfache registrierung")) {
    
    /* ... */
    
    if ($error == "") {
        
        /* ... */
        
        header(sprintf("Location: %s", $insertGoTo));
    }
}

13.12.2010 23:46 | geändert: 13.12.2010 23:47

5 andehrl

also ich bin jetzt doch ziemlich verwirrt. die registrierungsseiten habe erst funktioniert. dann wollte ich heute den link zur reistrierungsseite verändern, dass die seite in einem ssl modus angezeigt wird. daraufhin wurde von der registrierungsseite gleich auf die loginseite weitergeleitet. das ist dann auch so geblieben obwohl ich alles wieder rückgängig gemacht habe.

ich habe jetzt diesen code gelöscht:

if (isset($_SESSION['captcha_spam']) && $_POST["sicherheitscode"] == $_SESSION['']) {
    $error = '';
} else {
    /* ... */
}

danach habe ich header(sprintf("Location: %s", $insertGoTo)); wie in beitrag 3 verschoben. dann hat es wieder funktioniert. ich habe allerdings dann auch versucht den code zu löschen um zu sehen was passiert.
nachdem ich also

header(sprintf("Location: %s", $insertGoTo));

gelöscht hatte wurde die seite fehlerlos angezeigt und auch die registrierung funktionierte fehlerlos?????

ich habe den code jetzt eingerückt und header(sprintf("Location: %s", $insertGoTo)); wieder nach unten geschoben. schaut jetzt also so aus:

  session_start();
  
      if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "einfache registrierung")) {
          $result = mysql_query("SELECT nutzername FROM login WHERE nutzername = '" . mysql_real_escape_string($_POST['nutzername']) . "'");
          if (mysql_num_rows($result) > 0) {
              $error .= 'Dieser Nutzername ist bereits vergeben. Bitte versuchen Sie es mit einem anderen Namen.<br/><br/>';
          }
          
          $result = mysql_query("SELECT mail FROM login WHERE mail = '" . mysql_real_escape_string($_POST['mail']) . "'");
          if (mysql_num_rows($result) > 0) {
              $error .= 'Diese Emailadresse ist bereits vergeben. Bitte versuchen Sie es mit einer anderen E-Mail.<br/><br/>';
          }
          
          if (isset($_SESSION['captcha_spam']) && $_POST["sicherheitscode"] != $_SESSION['captcha_spam']) {
              $error .= 'Der Sicherheitscode ist falsch<br/>';
          }
          
          echo mysql_error();
      
      echo mysql_error();
      
      
      
      if (isset($_POST['nutzername'])) {
          $nutzername = htmlspecialchars($_POST['nutzername']);
      } else {
          $nutzername = '';
      }
      
      if (isset($_POST['passwort'])) {
          $passwort = htmlspecialchars($_POST['passwort']);
      } else {
          $passwort = '';
      }
      
      if (isset($_POST['passwort2'])) {
          $passwort2 = htmlspecialchars($_POST['passwort2']);
      } else {
          $passwort2 = '';
      }
      
      if (isset($_POST['handy'])) {
          $handy = htmlspecialchars($_POST['handy']);
      } else {
          $handy = '';
      }
      
      if (isset($_POST['mail'])) {
          $mail = htmlspecialchars($_POST['mail']);
      } else {
          $mail = '';
      }
      
      
      
      
      if ($error == "") {
          $insertSQL = sprintf("INSERT INTO login (vornachname, nutzername, passwort, mail, handy) VALUES (%s, %s, %s, %s, %s)", GetSQLValueString($_POST['vornachname'], "text"), GetSQLValueString($_POST['nutzername'], "text"), GetSQLValueString($_POST['passwort'], "text"), GetSQLValueString($_POST['mail'], "text"), GetSQLValueString($_POST['handy'], "text"));
          
          $Result1 = mysql_query($insertSQL, $Registrierung) or die(mysql_error());
          
          $insertGoTo = "8cSieSindEingeloggt.php";
          if (isset($_SERVER['QUERY_STRING'])) {
              $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
              $insertGoTo .= $_SERVER['QUERY_STRING'];
          }
          header(sprintf("Location: %s", $insertGoTo));
      }
  }

übrigens hat mich auch erstaunt, dass ich vorher auf der "erweiterten registrierung" auch sofort auf die loginseite weitergeleitet wurde und jetzt funktioniert es wieder, obwohl ich diese seite ja nicht verändert habe???

kann das an der "versuchten verschlüsselung" liegen?

13.12.2010 23:47 | geändert: 13.12.2010 23:50

6 Jörg Kruse

Unsere Beiträge haben sich überschnitten.

In deinem letzten Codeausschnitt scheinen die Klammern jetzt auch richtig gesetzt zu sein.

Der von mir verlinkte PHP-Formatierer benötigt übrigens auch noch ein "<php" am Anfang und ein "?>" am Ende des zu formatierenden Codes, habe ich grad gesehen.

PS: SSL-Verschlüsselung hat keinen Einfluss auf die Verarbeitung des PHP-Codes

13.12.2010 23:59 | geändert: 14.12.2010 00:00

7 andehrl

nach einigen magenumdrehungen funktionieren jetzt beide registrierungsseiten. danke dir vielmals für deine hilfe :-)

15.12.2010 16:11

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]