mod_rewrite (Formular/Datenbank/doppelpost)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mod_rewrite (Formular/Datenbank/doppelpost)

    OK funktionsweise des Skript:
    Man meldet sich auf register.player.php an dann werden die Daten mittels post nach success.player.php übergeben und dort in eine mysql datenbank eingetragen.

    Allerdings werden die adressen mittels mod_rewrite verändert:


    Nun zu meinem Problem, es werden die Daten 2 mal in die Datenbank eingetragen. Allerdings einmal ohne $p_residence, $p_nickname, $p_************, diese Variablen werden durch ein Formular nach register.player.php mittels post nach success.player.php übertragen.



    in meiner .htaccess steht:

    PHP-Code:

    RewriteEngine On 
    RewriteRule 
    ^(register_player/success)(.*)$ success.player.php [L
    RewriteRule ^(register_player)(.*)$ register.player.php 
    in meiner register.players.php steht:

    PHP-Code:

    <?php 
        
            
    include("include\config.inc"); 
        include(
    "include\header.inc"); 

    echo
    "<form action='"$url ."register_player/success/' method='POST'>
    <div align='center'><table width='80%'  border='1' cellpadding='0' 
    cellspacing='0' bordercolor='#000000'> 
      <tr> 
        <td height='24' valign='top' bordercolor='#425163' background='"

    $url ."gfx/fbg.jpg' bgcolor='#425163'> <div align='center'><strong><font 
    color='#FFFFFF'>Anmelden</font></strong></div></td> 
      </tr> 
      <tr> 
        <td bordercolor='#9CA6AD' bgcolor='#9CA6AD'><table width='100%'  
    border='0' cellpadding='5' cellspacing='0'> 
        

    <tr> 
        <td width='17%'> </td> 
        <td width='30%'><strong>eMail</strong></td> 
        <td width='53%'><input class='textfield' type='text' size='25' name='p_email1'></td> 
      </tr> 
      <tr> 
        <td> </td> 
        <td><strong>eMail wiederholen</strong></td> 
        <td><input class='textfield' type='text' size='25' name='p_email2'></td> 
      </tr> 
      <tr> 
        <td> </td> 
        <td><strong>Nickname</strong></td> 
        <td><input class='textfield' type='text' size='25' name='p_nickname'></td> 
      </tr> 
      <tr> 
        <td> </td> 
        <td><strong>Wohnsitz</strong></td> 
        <td>  <select class='textfield' name='p_residence'> 
        <option value='Deutschland'>Deutschland                        </option> 
        <option value='Österreich'>Österreich</option> 
        <option value='Schweiz'>Schweiz</option> 
        <option value='Anderes'>Anderes</option> 
      </select></td> 
      </tr> 
      <tr> 
        <td> </td> 
        <td><strong>Geschlecht</strong></td> 
        <td>  <select class='textfield' name='p_************'> 
        <option value='männlich'>männlich                               </option> 
        <option value='weiblich'>weiblich</option> 
      </select></td> 
      </tr> 
      <tr> 
        <td height='19' colspan='3'><div align='center'><input type='image' 
    src='"
    $url ."gfx/senden.jpg'></div></td> 
      </tr> 
        </table> 
            </td> 
      </tr> 
    </table></div></form>"


        include(
    "include\\footer.inc"); 
    ?>
    in meiner success.players.php steht:


    PHP-Code:

    <?php 
        
    include('include\config.inc'); 
        include(
    'include\header.inc'); 

    function 
    randomKey($chars) { 
    $genChars 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789'
    $retkey ""
       for (
    $i 1$i <= $chars$i++) 
       { 
       
    $rand rand(1,strlen($genChars)); 
       
    $retkey .= substr($genChars,$rand -1,1); 
       } 
            
       return (
    $retkey); 


    function 
    keyBlock($chars$blocks
    {    
       
    $key ""
       for(
    $i 0$i $blocks;$i++) 
       { 
           
    //Create an array of keys 
           
    $key[] = randomKey($chars); 
       } 
       
    $key implode("-"$key); 
    return(
    $key); 


    $p_passwd_uncoded keyBlock(5,3); 
    $p_passwd_coded md5($p_passwd_uncoded); 

    $p_email1 $_POST["p_email1"]; 
    $p_email2 $_POST["p_email2"]; 
    $p_residence $_POST["p_residence"]; 
    $p_nickname $_POST["p_nickname"]; 
    $p_************ = $_POST["p_************"]; 
    $p_join_time "$time"
    $p_join_date "$date"
    $p_email_coded md5($p_email1); 
    $p_email_uncoded "$p_email1"

    $eintrag "INSERT INTO players (p_passwd_uncoded, p_passwd_coded,
          p_residence, p_nickname, p_************, p_join_time, p_join_date, 
          p_email_uncoded, p_email_coded) 
       VALUES ('
    $p_passwd_uncoded', '$p_passwd_coded', '$p_residence', 
          '
    $p_nickname', '$p_************', '$p_join_time', '$p_join_date', 
          '
    $p_email_uncoded', '$p_email_coded')"
    $eintragen mysql_query($eintrag); 




        include(
    'include\footer.inc'); 
    ?>
    in der conifg.inc steht:


    PHP-Code:

    <?php 

    mysql_connect
    ("localhost","root","") or die 
    (
    "Keine Verbindung moeglich"); 
    mysql_select_db("cgl") or die 
    (
    "Die Datenbank existiert nicht"); 


    $path "C:\\Programme\\xampp\\htdocs\\hp\\cgl\\"
    $url "http://localhost/hp/cgl/"

    $timestamp time(); 
    $date date("d.m.Y",$timestamp); 
    $time date("H:i",$timestamp); 

    ?>
    So ich hoffe mir kann jemand helfen, ich hab das ganze auch ohne mod_rewrite probiert und da geht es, also HELFT MIR !

    Danke schonmal im Vorraus für eure Hilfe.
    EDIT:
    TobiaZ: Ein paar Returns im Quelltext können übrigens nicht schaden!
    Zuletzt geändert von TobiaZ; 15.05.2004, 17:35.

  • #2
    1. Bitte den Code mittels [PHP]-Tags des Forums formatieren. Kann ja keine Sau lesen

    Wo überprüfst du denn, ob die Werte überhaupt übergeben wurden???

    Kommentar


    • #3
      ich sehe ja das die datenbank gefüllt wird

      Kommentar


      • #4
        Das habe ich nicht gemeint!!!

        Ich meine an die Seite übergeben werden!

        Kommentar


        • #5
          noch garnicht wollte erstmal das skript so einfach wie möglich halten

          Kommentar


          • #6
            Nur wird so auch ein DB-Query abgesetzt, wenn gar keine Daten ankommen. Und so hast du ganz schnell nen leeren eintrag drin.

            Kommentar


            • #7
              hab jetzt eine drin und nun wird es nurnoch einmal eingetragen, so wie ich das haben wollte, aber mich wundert es, dass er ist davor 2 mal eingetragen hat ( einmal mit einmal ohne formular daten )

              Kommentar


              • #8
                wahrscheinlich wird deine Datei 2 mal aufgerufen. einmal vom formular und einmal vorher oder nachher. keine ahnung. hab mir das so genau nicht angesehen.

                Kommentar

                Lädt...
                X