Versio

Cannot redeclare makequote() (previously

Overzicht Reageren

Henk en Annie

Henk en Annie

22/09/2009 15:08:00
Quote Anchor link
Ik heb een complete UBB parser gemaakt.. werkt ie niet...
Waarom doet PHP weer zo k*t?
Als ik in index.php include("replace.php"); include_once.. maak, dan geeft ie de fout niet, maar dan wordt alleen het eerste bericht geparsed.
Hij geeft de volgende foutmelding:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Fatal error: Cannot redeclare makequote() (previously declared in E:\UsbWebserver2\Root\Gastenboek\replace.php:76) in E:\UsbWebserver2\Root\Gastenboek\replace.php on line 76


## index.php, hier wordt replace.php ingevoegd
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
<head>
    <title>Gastenboek &copy; Nick Vu Van</title>
    <link type="text/css" rel="stylesheet" href="style/style.css" />
    <?php include("replace.php"); ?>
</head>
<body>

<?php
// Vereist voor het verbinden met de database
require("connect.php");

// Aantal entries in tabel tellen
$count = mysql_query("SELECT COUNT(id) FROM berichten");
$totaal = mysql_result($count, 0);

// Aantal reacties per pagina showen
$aantalReacties = 2;
$aantalPaginas =  ceil($totaal / $aantalReacties);

// Pagina opvragen, zoniet huidige pagina is 0
$pagina = 0;
if(isset($_GET['pagina']) && $_GET['pagina'] > 0 && $_GET['pagina'] <= $aantalPaginas && is_numeric($_GET['pagina'])){
    $pagina = $_GET['pagina'];
}


// Gegevens voor huidige pagina
$reactiesPagina = $pagina * $aantalReacties;
$huidigePagina = mysql_query("SELECT id,naam,email,bericht,datum,tijd,verberg FROM berichten ORDER BY id DESC LIMIT " . $reactiesPagina.",".$aantalReacties);

// Gegevens voor huidige pagina showen
if($totaal == 0){
    echo "Er zijn geen berichten, <a href=\"" . $schrijven . "\">plaats</a> als eerste een bericht!";
}
else {
    while($geg = mysql_fetch_assoc($huidigePagina)){
        $geg['naam'] = ucwords(strtolower($geg['naam']));
        if($geg['verberg'] == 0){
            $poster = '<a href="mailto:' . $geg['email'] . '">' . $geg['naam'] . '</a>';
        }
else {
            $poster = $geg['naam'];
        }

        $geg['bericht'] = UBB($geg['bericht']);
        echo "<div class=\"comments\" id=\"box\">
            <div class=\"comments\" id=\"head\"><b>"
. $poster . "</b> " . $geg['datum'] . " @ " . $geg['tijd'] . "<span style=\"float:right\"><a href=\"?q=" . $geg['id'] . "\">Quote</a></span></div>
            <div class=\"comments\" id=\"bericht\"><p>"
. $geg['bericht'] . "</p></div>
            <div class=\"comments\" id=\"clear\"></div>
            </div><br />"
;
    }

    echo "<br /><a href=\"" . $schrijven . "\">Plaats</a> een bericht";
}


echo "<br /><br />";

// Paginanummering
for($i = 0; $i < $aantalPaginas; $i++) {
    if($pagina == $i) {
        if($aantalPaginas == 1){
            echo "";
        }
else {
            echo "<b>".($i+1)."</b>";
        }
    }
else {
        echo "<a href=\"".$_SERVER['REQUEST_URI']."?pagina=".$i."\">".($i+1)."</a>";
    }

    if($i < $aantalPaginas - 1) {
        echo " - ";
    }
}

?>

</body>
</html>


## replace.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<style type="text/css">
.num {
float: left;
color: gray;
font-size: 13px;
font-family: monospace;
text-align: right;
margin-right: 6pt;
padding-right: 6pt;
border-right: 1px solid gray;}

body {margin: 0px; margin-left: 5px;}
td {vertical-align: top;}
code {white-space: nowrap;}
</style>

<!-- left, right, center, justify! -->

<?php

function UBB($string){

// HTML verbieden
$string = htmlspecialchars($string);

// Enters maken
$string = nl2br($string);

// Links maken
$string = preg_replace("_\[url](.*)\[/url\]_si", '<a href="http://$1" style="text-decoration: none;">$1</a>', $string);
$string = preg_replace("_\[url=(.*)\](.*?)\[/url\]_si", '<a href="http://$1" style="text-decoration: none;">$2</a>', $string);
$string = preg_replace("_\[email](.*)\[/email\]_si", '<a href="mailto://$1" style="text-decoration: none;">$1</a>', $string);
$string = preg_replace("_\[email=(.*)\](.*?)\[/email\]_si", '<a href="mailto:$1" style="text-decoration: none;">$2</a>', $string);

// Kleuren
$string = preg_replace("_\[color=(.*)\](.*?)\[/color\]_si", '<span style="color: $1">$2</span>', $string);

// Tekstgrootte
$string = preg_replace("_\[size=(.*)\](.*?)\[/size\]_si", '<span style="font-size: $1">$2</span>', $string);

// Vetgedrukt
$string = preg_replace("_\[b\](.*?)\[/b\]_si", '<b>$1</b>', $string);

// Cursief
$string = preg_replace("_\[i\](.*?)\[/i\]_si", '<i>$1</i>', $string);

// Onderstrepen
$string = preg_replace("_\[u\](.*?)\[/u\]_si", '<u>$1</u>', $string);

// Doorstrepen
$string = preg_replace("_\[s\](.*?)\[/s\]_si", '<s>$1</s>', $string);

// Knipperen
$string = preg_replace("_\[blink\](.*?)\[/blink\]_si", '<blink>$1</blink>', $string);

// Superscript
$string = preg_replace("_\[sup\](.*?)\[/sup\]_si", '<sup>$1</sup>', $string);

// Subscript
$string = preg_replace("_\[sub\](.*?)\[/sub\]_si", '<sub>$1</sub>', $string);

// All caps
$string = preg_replace("_\[ac\](.*?)\[/ac\]_si", '<span style="text-transform:uppercase">$1</span>', $string);

// Small caps
$string = preg_replace("_\[sc\](.*?)\[/sc\]_si", '<span style="text-transform:lowercase">$1</span>', $string);

// Marquee, standaard "scroll", andere opties: "slide" & "alternate"
$string = preg_replace("_\[slide\](.*?)\[/slide\]_si", '<marquee>$1</marquee>', $string);
$string = preg_replace("_\[slide=(.*)\](.*?)\[/slide\]_si", '<marquee behavior="$1">$2</marquee>', $string);

// Smilies
$string = str_replace(":)"," <img src=\"images/lach.gif\">", $string);

// Quotefunctie
function makeQuote($tekst){
    $regex = '#\[quote(?:\h*=\h*(?|\"(.*?)\"|&\#039;(.*?)&\#039;|([^][=\s]+)))?]'.
             '((?:[^[]|\[(?!/quote]|quote(?:\h*=\h*(?|\"(.*?)\"|&\#039;(.*?)&\#039;|([^][=\s]+)))?])|(?R))+)'.
             '\[/quote]#';
    if (is_array($tekst)) {
        $tekst = '<fieldset style="background-color:#FFF; width:50%;">
                    <legend style="background-color:#FFF;">Quote van'
.(empty($tekst[1]) ? '' : ' ' .$tekst[1]). '</legend><p>' .$tekst[2]. '</p></fieldset>';
    }

    return preg_replace_callback($regex, 'makeQuote', $tekst);
}


// Highlightfunctie
function customHighlight($code){
    $code = highlight_string(htmlspecialchars_decode(strip_tags($code[1])), true);
    
    $aLines = explode("<br />", $code);
    $iLines = count($aLines);
 
    $output = "<table><tr><td class=num>\n";
    for($i = 1; $i <= $iLines; $i++){
    $output .= $i ."<br />";
    }

    $output .= "\n</td><td>\n$code\n</td></tr></table>";
 
    return $output;
}


// Tekst binnen de code-tags highlighten
$string = preg_replace_callback("#\[code\](.*?)\[/code\]#s", "customHighlight", $string);

// Tekst binnen de quote-tags omzetten in een quote
$string = makeQuote(htmlspecialchars_decode($string));

return $string;
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Henk en Annie
 
PHP hulp

PHP hulp

24/05/2012 00:13:06
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
- SanThe -

- SanThe -

22/09/2009 16:55:00
Quote Anchor link
Je mag een function maar één keer definiëren. Dus het bestand waar het in staat mag je maar één keer includen.
 
Henk en Annie

Henk en Annie

22/09/2009 17:23:00
Quote Anchor link
hoe kan ik anders elk bericht door de parser halen?
 
Jan Willem van der Veer

Jan Willem van der Veer

22/09/2009 17:50:00
Quote Anchor link
Quote:
hoe kan ik anders elk bericht door de parser halen?

Misschien door elke keer een functie aan te roepen met het bericht? Ik snap persoonlijk het hele probleem niet helemaal.
Sowieso zie ik niet dat je twee keer dezelfde functie aanmaakt (zie namelijk nergens twee keer de include van replace.php).
 
Henk en Annie

Henk en Annie

22/09/2009 21:20:00
Quote Anchor link
Ja en dat doe ik, ik snap ook niet waarom ik deze fout krijg.
Ik denk dat het komt omdat ik in while(){ het volgende heb gezet:
$geg['bericht'] = UBB($geg['bericht']);

Dat het bestand daarom geïnclude wordt, maar ik weet echt niet hoe ik anders alle berichten door de parser haal.

SanThe weet jij hoe ik elk bericht door de parser kan halen zonder die foutmelding?
 
Jan Willem van der Veer

Jan Willem van der Veer

22/09/2009 21:24:00
Quote Anchor link
Quote:
Dat het bestand daarom geïnclude wordt, maar ik weet echt niet hoe ik anders alle berichten door de parser haal.
Dan heb jij wel een hele magic PHP..., gezien de functie inladen op functie-call voor zover ik weet nog moet worden uitgevonden. Kan het niet gewoon zijn dat je in twee bestanden een functie hebt met dezelfde naam?
 
Henk en Annie

Henk en Annie

22/09/2009 21:32:00
Quote Anchor link
Nee ik post hieronder connect.php
maar ik heb echt geen dubbele functies

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
// MySQL server, 99% van de tijd "localhost"
$server = "localhost";
// Gebruikersnaam voor MySQL server
$gebruiker = "root";
// Wachtwoord voor MySQl server
$wachtwoord = "***";
// Database voor de entries
$database = "gastenboek";
// Tabel in $database
$tabel = "berichten";

// Pagina waar je de entries kan lezen
$lezen = "index.php";
// Pagina waar je een entry kan toevoegen
$schrijven = "add.php";
// Adminpagina
$admin = "admin.php";

// UBB code aan? true voor aan, false voor uit
$UBB = true;
// Naam (editen)
$naam = "de administrator";

# Functie maken om in te loggen, verander hier de gebruikersnaam en het wachtwoord!
function inloggen(){
    # Gebruikersnaam administrator
    $gebruikersnaam = "admin";
    # Wachtwoord
    $wachtwoord = "admin";
    
    if($_SERVER['PHP_AUTH_USER'] != $gebruikersnaam || $_SERVER['PHP_AUTH_PW'] != $wachtwoord){
        header("WWW-Authenticate: Basic realm=\"Authenticatie vereist!\"");
        header("HTTP/1.0 401 Unauthorized");
        echo "Je bent niet ingelogd! <br /><br /> Probeer het <a href=\"javascript:location.reload();\">opnieuw</a>.";
        exit;
    }
}


// Email bij entry? TRUE voor ja, FALSE voor nee
$mail = false;
// Emailadres
$email = "test@test.nl";
// Onderwerp
$onderwerp = "Nieuwe entry in je gastenboek!";
// Bericht
$bericht = "<html><head><title>" . $onderwerp . "</title></head><body>In je gastenboek is het volgende geplaatst: <br> blabla</body></html>";
// Headers, HTML email sturen
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Headers, verander hier het emailadres en eventueel "Gastenboek"
$header .= 'From: Gastenboek <noreply@test.nl>' . "\r\n";

$db = mysql_connect($server, $gebruiker, $wachtwoord) or die ('Kon geen verbinding maken met MySQL.');
mysql_select_db($database) or die ("Kon de database niet vinden.");
?>
 
Jan Willem van der Veer

Jan Willem van der Veer

22/09/2009 21:37:00
Quote Anchor link
Wordt die index.php zelf niet per ongeluk ergens in een while opgenomen?
 
Henk en Annie

Henk en Annie

22/09/2009 21:49:00
Quote Anchor link
nee sorry
er staat alleen een while in index.php
het is mij echt een raadsel
 
Dos Moonen

Dos Moonen

22/09/2009 22:15:00
Quote Anchor link
Cool!

Ik wist niet dat je functies binnen functies kan defineren.
*hint*
 
Henk en Annie

Henk en Annie

23/09/2009 10:59:00
Quote Anchor link
Haha bedankt 't werkte inderdaad niet
Ik heb nu 3 aparte functies gemaakt en dat werkt super =)
 
Jan Willem van der Veer

Jan Willem van der Veer

23/09/2009 13:04:00
Quote Anchor link
Volgende keer wat beter inspringen... Dan had je het waarschijnlijk direct gezien :)
 



Overzicht Reageren

Get Adobe Flash player