[PHP] Hilfe zur Verständnis eines Skriptes

Dieses Thema im Forum "Webentwicklung" wurde erstellt von dv_puca, 19. Juli 2009 .

Schlagworte:
  1. 19. Juli 2009
    Hilfe zur Verständnis eines Skriptes

    Hey,
    ich hab auf meiner Seite jetzt ein Kommentarskript eingebaut, läuft auch super, doch leider bei der Seite wo man ein Kommentar hinterlassen kann wird alles auf einmal dick geschrieben.

    PHP:
    <?
    //Please set the following variables for your mysql database:
    $db_hostname  "localhost" ;   //usually "localhost be default"
    $db_username  "xxx" ;   //your user name
    $db_pass  "xxx" ;   //the password for your user
    $db_name  "xxx" ;   //the name of the database



    // connect to database
    $dbh  mysql_connect  ( $db_hostname $db_username $db_pass ) or die ( 'I cannot connect to the database because: '  mysql_error ());
    mysql_select_db  ( $db_name );



    //for security, html is not allowed, so bbcode is used for formatting

    //START 3rd PARTY CODE:  I did not write this

































    ?>
    <style type="text/css">
    <!--
    body    {
        font-family: Verdana, Arial, Helvetica, sans-serif;
        font-size: 12px;
    }

    .bold {
        font-weight: bold;
    }

    .italics {
        font-style: italic;
    }

    .underline {
        text-decoration: underline;
    }

    .strikethrough {
        text-decoration: line-through;
    }

    .overline {
        text-decoration: overline;
    }

    .sized {
        text-size:
    }

    .quotecodeheader {
        font-family: Verdana, arial, helvetica, sans-serif;
        font-size: 12px;
        font-weight: bold;
    }

    .codebody {
        background-color: #FFFFFF;
        font-family: Courier new, courier, mono;
        font-size: 12px;
        color: #006600;
        border: 1px solid #BFBFBF;
    }

    .quotebody {
        background-color: #FFFFFF;
        font-family: Courier new, courier, mono;
        font-size: 12px;
        color: #660002;
        border: 1px solid #BFBFBF;
    }

    .listbullet {
        list-style-type: disc;
        list-style-position: inside;
    }

    .listdecimal {
        list-style-type: decimal;
        list-style-position: inside;
    }

    .listlowerroman {
        list-style-type: lower-roman;
        list-style-position: inside;
    }

    .listupperroman {
        list-style-type: upper-roman;
        list-style-position: inside;
    }

    .listloweralpha {
        list-style-type: lower-alpha;
        list-style-position: inside;
    }

    .listupperalpha {
        list-style-type: upper-alpha;
        list-style-position: inside;
    }
    -->
    </style>

    <?php
        
    //Local copy

        
    function  BBCode ( $Text )
            {
                
    // Replace any html brackets with HTML Entities to prevent executing HTML or script
                // Don't use strip_tags here because it breaks [url] search by replacing & with amp
                
    $Text  str_replace ( "<" "&lt;" $Text );
                
    $Text  str_replace ( ">" "&gt;" $Text );

               

                
    // Set up the parameters for a URL search string
                
    $URLSearchString  " a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\'" ;
                
    // Set up the parameters for a MAIL search string
                
    $MAILSearchString  $URLSearchString  " a-zA-Z0-9\.@" ;
                
                
    //Non BB URL Search
                //$Text = eregi_replace("([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])", "<a href=\"\\1://\\2\\3\" target=\"_blank\" target=\"_new\">\\1://\\2\\3</a>", $Text);
                //$Text = eregi_replace("(([a-z0-9_]|\\-|\\.)+@([^[:space:]]*)([[:alnum:]-]))", "<a href=\"mailto:\\1\" target=\"_new\">\\1</a>", $Text);
                
    if ( substr ( $Text , 0 7 ) ==  "http://" ){
                
    $Text  eregi_replace ( "([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])" "<a href=\"\\1://\\2\\3\">\\1://\\2\\3</a>" $Text );
                 
    // Convert new line chars to html <br /> tags
                
    $Text  nl2br ( $Text );
                } else { 
                
    // Perform URL Search
                
    $Text  preg_replace ( "/\[url\]([ $URLSearchString ]*)\[\/url\]/" '<a href="javascript:go(\'$1\',\'new\')">$1</a>' $Text );
                
    $Text  preg_replace ( "(\[url\=([ $URLSearchString ]*)\](.+?)\[/url\])" '<a href="javascript:go(\'$1\',\'new\')">$2</a>' $Text );
                
    //$Text = preg_replace("(\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[/url\])", '<a href="$1" target="_blank">$2</a>', $Text);
                 // Convert new line chars to html <br /> tags
                
    $Text  nl2br ( $Text );
                }
                
    // Perform MAIL Search
                
    $Text  preg_replace ( "(\[mail\]([ $MAILSearchString ]*)\[/mail\])" '<a href="mailto:$1">$1</a>' $Text );
                
    $Text  preg_replace ( "/\[mail\=([ $MAILSearchString ]*)\](.+?)\[\/mail\]/" '<a href="mailto:$1">$2</a>' $Text );
                
                
    // Check for bold text
                
    $Text  preg_replace ( "(\[b\](.+?)\[\/b])is" , '<span class="bold">$1</span>' , $Text );

                
    // Check for Italics text
                
    $Text  preg_replace ( "(\[i\](.+?)\[\/i\])is" , '<span class="italics">$1</span>' , $Text );

                
    // Check for Underline text
                
    $Text  preg_replace ( "(\[u\](.+?)\[\/u\])is" , '<span class="underline">$1</span>' , $Text );

                
    // Check for strike-through text
                
    $Text  preg_replace ( "(\[s\](.+?)\[\/s\])is" , '<span class="strikethrough">$1</span>' , $Text );

                
    // Check for over-line text
                
    $Text  preg_replace ( "(\[o\](.+?)\[\/o\])is" , '<span class="overline">$1</span>' , $Text );

                
    // Check for colored text
                
    $Text  preg_replace ( "(\[color=(.+?)\](.+?)\[\/color\])is" , "<span style=\"color: $1\">$2</span>" , $Text );

                
    // Check for sized text
                
    $Text  preg_replace ( "(\[size=(.+?)\](.+?)\[\/size\])is" , "<span style=\"font-size: $1px\">$2</span>" , $Text );

                
    // Check for list text
                
    $Text  preg_replace ( "/\[list\](.+?)\[\/list\]/is" '<ul class="listbullet">$1</ul>'  , $Text );
                
    $Text  preg_replace ( "/\[list=1\](.+?)\[\/list\]/is" '<ul class="listdecimal">$1</ul>'  , $Text );
                
    $Text  preg_replace ( "/\[list=i\](.+?)\[\/list\]/s" '<ul class="listlowerroman">$1</ul>'  , $Text );
                
    $Text  preg_replace ( "/\[list=I\](.+?)\[\/list\]/s" '<ul class="listupperroman">$1</ul>'  , $Text );
                
    $Text  preg_replace ( "/\[list=a\](.+?)\[\/list\]/s" '<ul class="listloweralpha">$1</ul>'  , $Text );
                
    $Text  preg_replace ( "/\[list=A\](.+?)\[\/list\]/s" '<ul class="listupperalpha">$1</ul>'  , $Text );
                
    $Text  str_replace ( "[*]" "<li>" $Text );

                
    // Check for font change text
                
    $Text  preg_replace ( "(\[font=(.+?)\](.+?)\[\/font\])" , "<span style=\"font-family: $1;\">$2</span>" , $Text );

                
    // Declare the format for [code] layout
                
    $CodeLayout  '<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
                                    <tr>
                                        <td class="quotecodeheader"> Code:</td>
                                    </tr>
                                    <tr>
                                        <td class="codebody">$1</td>
                                    </tr>
                               </table>'
    ;
                
    // Check for [code] text
                
    $Text  preg_replace ( "/\[code\](.+?)\[\/code\]/is" , " $CodeLayout " $Text );

                
    // Declare the format for [quote] layout
                
    $QuoteLayout  '<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
                                    <tr>
                                        <td class="quotecodeheader"> Quote:</td>
                                    </tr>
                                    <tr>
                                        <td class="quotebody">$1</td>
                                    </tr>
                               </table>'
    ;
                               
                
    // Check for [code] text
                
    $Text  preg_replace ( "/\[quote\](.+?)\[\/quote\]/is" , " $QuoteLayout " $Text );
                
                
    // Images
                // {bild-down: pathtoimage}

                
    $Text  preg_replace ( "/\[img\](.+?)\[\/img\]/" '<img src="$1">' $Text );
                
                
    // [img=widthxheight]image source[/img]
                
    $Text  preg_replace ( "/\[img\=([0-9]*)x([0-9]*)\](.+?)\[\/img\]/" '<img src="$3" height="$2" width="$1">' $Text );
                
                return 
    $Text ;
            }


    //END 3rd PARTY CODE

    //quick script to make the data look nice
    function  formatDate ( $val )  
      {  
          list(
    $date $time ) =  explode ( " " $val );  
          list(
    $year $month $day ) =  explode ( "-" $date );
          list(
    $hour $minute $second ) =  explode  ( ":" $time );
          return 
    date ( "l, m.j.y @ H:ia" mktime ( $hour $minute $second $month $day $year ));  
      } 

      

    function 
    getComments ( $tutid ){
    //creates a function that can easily be called from any page

    //create the css code to make the form look good.  You can edit this to change colors, etc:
    echo  "
    <style>


    .postedby {
        padding: 0 0 0 18px;
        background: url(images/abullet.gif) no-repeat 0 4px;
        }
        
    h3.formtitle {
        margin : 0px 0px 0px 0px;
        border-bottom: 1px dotted #ccc;
        padding-bottom: 8px;
        }

    .commentbody {
        border-top: 1px dotted #ccc;
        }
        

    .submitcomment, #submitcomment, #currentcomments, #rating, .textad {
        background-color: #F5F5F5;
        border: 1px dotted #ccc;
        padding: 5px;
        padding: 5px;
        margin: 20px 0px 0px 0px;
        }




    .form {
        font-size: 70%;
        background-color: #FAFAFA;
        border: solid 1px #C6C6C6;
        padding: 2px;
        }

    .formtext {
        background-color: #FAFAFA;
        border: solid 1px #C6C6C6;
        padding: 2px;
        border-bottom: 1px dotted #ccc
        }

    .form:hover, .formtext:hover {
        background: white;
        }
        
    .form:focus, .formtext:focus {
        background: white;
        border: solid 1px #000000;
        }
        
    .submit {
        background-color: #D3D3D3;
        border: solid 1px #C6C6C6;
        border-right:  solid 1px #9A9A9A;
        border-bottom:  solid 1px #9A9A9A;
        }
        
    .submit:hover, .submit:focus {
        background: #EDEDED;
        }
        </style>

        
        "
    ;
    //fetch all comments from database where the tutorial number is the one you are asking for
        
    $commentquery  mysql_query ( "SELECT * FROM comments WHERE tutorialid=' $tutid ' ORDER BY date" ) or die( mysql_error ());
    //find the number of comments
        
    $commentNum  mysql_num_rows ( $commentquery );
    //create a headline
        
    echo  "<div id=\"currentcomments\" class=\"submitcomment\"><h3 class=\"formtitle\">Kommentare</h3>\n" ;
        echo 
    $commentNum  " Kommentar sind vorhande (<a href=\"#post\">Schreibe deinen eigenen</a>)\n" ;
    //for each comment in the database in the right category number...
        
    while( $commentrow  mysql_fetch_row ( $commentquery )){
    //for security, parse through the bbcode script
    //the number corresponds to the column (the message is always stored in column 4
    //COUTING STARTS at 0!!!
        
    $commentbb  BBCode ( $commentrow [ 4 ]);
    //create the right date format
            
    $commentDate  formatDate ( $commentrow [ 6 ]);

            echo 
    "<div class=\"commentbody\" id=\" $commentrow [ 0 ] \">\n
            <p>
    $commentbb </p>\n
            <p class=\"postedby\">Posted by "
    ;
            if(
    $commentrow [ 3 ]){
            echo 
    "<a href=\" $commentrow [ 3 ] \"> $commentrow [ 2 ] </a> " ;
            } else {
            echo 
    " $commentrow [ 2 ]  " ;
            }
            echo 
    "on  $commentDate  | # $commentrow [ 0 ] </p>\n
            \n</div>"
    ;
            
        }
        echo 
    "</div>" ;
    }

    function 
    submitComments ( $tutid2 , $tuturl ){
    //a javascript script to make sure all the required fields are filled in
    ?>
    <script language="javascript">

    function form_Validator(form)
    {

      if (form.name.value == "")
      {
        alert("Please enter your name.");
        form.name.focus();
        return (false);
         }

      if (form.message.value == "")
      {
        alert("Please enter your message.");
        form.message.focus();
        return (false);
      }
      
      return (true);
      }
      //-->
      </script>
    <?php
    //create the form to submit comments
    //you can add more fields, but make sure you add them to the db table and the page, submitcomment.php
        
    echo  "
    <a name=\"post\">
    <div id=\"submitcomment\" class=\"submitcomment\">
    <form name=\"submitcomment\" method=\"post\" action=\"submitcomment.php\" onSubmit=\" return form_Validator(this)\">
    <table width=\"100%\">
            <tr>
                    <th colspan=\"2\"><h3 class=\"formtitle\">Kommentar hinterlassen:</h3></th>
            </tr>
            <tr>

                    <th scope=\"row\"><p class=\"req\">Name:</p></th>
                    <td><input class=\"form\" tabindex=\"1\" id=\"name\" name=\"name\" /></td>
            </tr>
            <tr>
                    <th scope=\"row\"><p class=\"opt\">Email:</p></th>
                    <td><input class=\"form\" tabindex=\"2\" id=\"email\" name=\"email\" /></td>
            </tr>
            <tr>

                    <th scope=\"row\"><p class=\"opt\">URL:</p></th>
                    <td><input class=\"form\" tabindex=\"3\" id=\"url\" name=\"url\" /></td>
            </tr>
            <tr valign=\"top\">
                    <th scope=\"row\"><p class=\"req\">Kommentar:</p><br /></th>
                    <td><textarea class=\"formtext\" tabindex=\"4\" id=\"message\" name=\"message\" rows=\"10\" cols=\"50\"></textarea></td>
            </tr>

            <tr>    
                    <td>&nbsp;</td>
                    <td><input type=\"submit\" name=\"post\" class=\"submit\" value=\"Kommentar abschicken\" /><br />
                    



    </td>
            </tr>
    </table>
    <input type=\"hidden\" name=\"tuturl\" value=\"
    $tuturl \" />
    <input type=\"hidden\" name=\"tutid2\" value=\"
    $tutid2 \" />
    </form>


    </div>
    "
    ;
    }
    ?>

    ich kenn mich nun leider so gar nicht mit php aus, wo genau steht das er alles dick macht bzw. größer? Irgendwas muss da ja stehen :-/

    BWs sind garantiert!
     
  2. 19. Juli 2009
    AW: Hilfe zur Verständnis eines Skriptes

    Such das Script nach

    font-weight: bold;
    <strong>
    <b>

    ab, damit kann der Text Dick geschrieben werden.
     
  3. 21. Juli 2009
    AW: Hilfe zur Verständnis eines Skriptes

    Ich hab das Script mal durchsucht. Nicht zu finden war: <strong>, <b>, <bold>. Demnach ist dein Problem im CSS-Teil zu finden:

    ----------------------------------------------------------------------------------------
    Zeile 1:
    .bold {
    font-weight: bold;
    }

    Die Klasse wird in Zeile 176 verwendet:
    $Text = preg_replace("(\[b\](.+?)\[\/b])is",'<span class="bold">$1</span>',$Text);
    ----------------------------------------------------------------------------------------
    Zeil 85:
    .quotecodeheader {
    font-family: Verdana, arial, helvetica, sans-serif;
    font-size: 12px;
    font-weight: bold;
    }

    Die Klasse wir in Zeilen 211 und 223 verwendet:
    <td class="quotecodeheader"> Code:</td>
    ----------------------------------------------------------------------------------------

    Ich denke damit habe ich deine Suche etwas eingegrenzt. Wobei ich sagen muss, dass das für mich alles normal aussieht.
    Cheers!
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.