Tiniuspuza86 Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 (endret) Nå trenger jeg virkelig hjelp her. Har fått fikset en security code i gjesteboka mi, men er bare bildet som har blitt limt inn. Det vil si at jeg fortsatt kan poste innlegg der uten å bruke security code boksen. Hvordan forandrer jeg dette i koden slik at denne må brukes, og at uten å skrive inn koden så får man ikke postet innlegg? Får så mye spam at jeg må få gjort noe. Jente her, så trenger en detaljert forklaring Tror det er shoutbox.php som styrer dette i min gjestebok. Kan lime inn scriptet her for dere som vil se. Hvis noen da vet hva som må forandres på og hvor dette skal gjøres blir jeg glad <?php // INNTILLINGER // ////////////////// require_once('config.php'); /////////////////////////////////////////////////// // THE MAGIC!! (ikke rør, Gud vil bannlyse deg!) // /////////////////////////////////////////////////// // KOBLE TIL // /////////////////////// $mysql_link = mysql_connect($config['host'], $config['user'], $config['pass']) or die("Kunne ikke koble til databasen på '{$config['host']}' med bruker '{$config['user']}'"); $mysql_db = mysql_select_db($config['db']) or die("Kunne ikke velge databasen '{$config['db']}' på '{$config['host']}'."); // Sjekke om tabellen finnes $table_exist = FALSE; $check_table = mysql_query("SHOW TABLES"); while ($table = mysql_fetch_array($check_table)) { if (in_array($config['tabl'], $table)) { $table_exist = TRUE; } } if ($table_exist == FALSE) { echo "Tabellen finnes ikke. Lager tabell."; $create_table = mysql_query("CREATE TABLE `{$config['tabl']}` ( `id` int(4) NOT NULL auto_increment, `name` varchar(50) NOT NULL, `body` varchar(400) NOT NULL, `url` varchar(50) default NULL, `email` varchar(50) default NULL, `date` datetime NOT NULL, `ip` varchar(15) NULL, KEY `id` (`id`) ) TYPE=MyISAM"); echo mysql_error(); } // HVIS KLART FOR Å LEGGE INN // //////////////////////////////// $name = trim($_POST['name']); $body = trim($_POST['body']); if (!empty($name) AND !empty($body)) { // SAMLE INN OG FORMATERE DATA $name = htmlentities($name); $name = wordwrap($name, $config['wrap'], ' ', 1); $body = htmlentities($body); $body = nl2br($body); $body = wordwrap($body, $config['wrap'], ' ', 1); $email = trim($_POST['email']); if (!empty($email)) { $email_pattern = '/(^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$)/'; $email_match = preg_match($email_pattern, $email); if ($email_match == FALSE) { $email = NULL; } } else { $email = NULL; } $url = trim($_POST['url']); if (!empty($url)) { $url_parse = parse_url($url); if (empty($url_parse['scheme'])) { $url = 'http://' . $url; } $url_pattern = '/(^(http:\/\/){0,1}(www\.){0,1}([a-z0-9-]+\.){1,2}([a-z]{2,4})(\/[_a-z0-9-]+)*(\?){0,1}([_a-z0-9]+\=[_a-z0-9]+(\&){0,1})*$)/'; $url_match = preg_match($url_pattern, $url); if ($url_match == FALSE) { $url = NULL; } } else { $url = NULL; } // LAG DATO $date = date('Y-m-d H:i:s'); // FINN IP $ip = $_SERVER['REMOTE_ADDR']; // SEND SPØRRING $insert_data = mysql_query("INSERT INTO {$config['tabl']} VALUES ('', '$name', '$body', '$url', '$email', '$date', '$ip')"); // Sjekk resultat if ($insert_data == TRUE) { echo $config['hils']; } else { echo 'Handlingen var mislykket<br>'. mysql_error(); } } // VIS INNLEGG // ////////////////////////// ?> <!-- START SHOUTBOX --> <div id="shoutbox"> <div id="shout-header"> <h3 align="center"></h3> </div> <p><a href='?newshout' title='Åpner boksen du kan skrive i'><h4>Skriv ny melding</h4></a></p> <?php // HVILKET INNLEGG BEGYNNER? if (isset($_GET['showfrom']) AND is_numeric($_GET['showfrom'])) { $config['from'] = $_GET['showfrom']; } // SEND SPØRRING OG LOOP ARRAY $get_data = mysql_query("SELECT * FROM {$config['tabl']} ORDER BY date DESC LIMIT {$config['from']}, {$config['num']}"); while ($data = mysql_fetch_array($get_data)) { echo "<div class='shout-post'>\n"; if (!empty($data['url'])) { echo "<p class='shout-user'><a href='{$data['url']}' title='Gå til hjemmesiden til {$data['name']}'><b>{$data['name']}</a> sa:</b></p>\n"; } else { echo "<p class='shout-user'><b>{$data['name']} sa:</b></p>\n"; } echo "<p>{$data['body']}</p>"; if (!empty($data['email'])) { echo "<div class='shout-mail'><a href='mailto:{$data['email']}' title='Send mail til {$data['name']}'></a></div>\n"; } echo "<p class='shout-date'>{$data['date']}</p> </div>\n"; } // FLERE SIDER MED INNLEGG? if (mysql_num_rows($get_data) == $config['num']) { $nextfrom = $config['from'] + $config['num']; echo "<div id='next-shout'><a href='?showfrom={$nextfrom}' class='next'>Neste -></a></div>"; } ?> <!-- SKRIV NYTT INNLEGG --> <script type="text/javascript"> <!-- // BYTTER PÅ Å VISE OG SKJULE <div> kalt 'shout-new' function toggleLayer() { var whichLayer = 'shout-new'; var style2 = document.getElementById(whichLayer).style; if (document.getElementById(whichLayer).style.display == "hidden") { style2.display = style2.display? "":"block"; } else { style2.display = style2.display? "":"none"; } } // SKRIVER UT LINK FOR Å TRIGGE toggleLayer() document.write('<p><a href="java script:toggleLayer()" title="Åpner boksen du kan skrive i."><h4>Skriv ny melding</h4></a></p>'); // SKRIVER UT DEN ØVRIGE FORMEN document.write('<div id="shout-new" style="display:none;"><form method="post" action="?"><p><label> <label for="name">Name: </label><input type="text" name="name" id="name" /><br /> <label for="email">Email: </label><input type="text" name="email" id="email" /><br /> <label for="message">Message: </label><textarea rows="5" cols="30" name="message" id="message"></textarea><br /> <img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /><br /> <label for="security_code">Security Code: </label><input id="security_code" name="security_code" type="text" /><br /> <input type="submit" name="submit" value="Submit" /> </form> --> </script> <?php if (isset($_GET['newshout'])) { ?> <div id="shout-new"> <p><a href='?' title='Lukker boksen du kan skrive i'><h4>Lukk melding</h4></a></p> <form method="post" action="?"> <p><label>Navn <input type="text" name="name"></label><br> <label></label> <label>Hjemmeside* <input type="text" name="url"></label><br> <label>Melding <textarea name="body"></textarea></label><br> <span class="tiny">* betyr valgfritt</span><br> </td></tr></table> <img src="CaptchaSecurityImages.php" /> Security Code: <input id="security_code" name="security_code" type="text" /> <?php if(($_SESSION['security_code'] == $_POST['security_code']) && (!empty($_SESSION['security_code'])) ) { // Insert you code for processing the form here, e.g emailing the submission, entering it into a database. unset($_SESSION['security_code']); } else { // Insert your code for showing an error message here } ?> <input type="submit" value="Send"></p> </form> </div> <?php } else { ?> <noscript> <div id='shout-new'> </div> </noscript> <?php } ?> </div> <!-- SLUTT SHOUTBOX --> Endret 16. juli 2008 av Tiniuspuza86 Lenke til kommentar
OISNOT Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 (endret) Har ikke svart på spørsmålet ditt, kanskje noen som er mer villig til å se gjennom hele koden din vil svare... *Virker kanskje litt negativ denne teksten. Men har ikke tid til å lete gjennom hele koden din, så bare peker ut det eg så* For fremtiden håper eg du deler opp koden din litt mer i funksjoner/klasser. Kan også ha forskjellige filer til forskjellige ting. Fx en for å poste data som deretter redirecter browseren til siden som viser innholdet, og en for funksjoner og constanter. function my_mysql_does_table_exist($tablename, $resource) { $tablename = mysql_real_escape_string($tablename, $resource); $result = mysql_query("SHOW TABLES like '$tablename'", $resource); return mysql_num_rows($result) === 1; } // KOBLE TIL // /////////////////////// $mysql_link = mysql_connect($config['host'], $config['user'], $config['pass']) or die("Kunne ikke koble til databasen på '{$config['host']}' med bruker '{$config['user']}'"); $mysql_db = mysql_select_db($config['db']) or die("Kunne ikke velge databasen '{$config['db']}' på '{$config['host']}'."); // Sjekke om tabellen finnes if (!my_mysql_does_table_exist($config['tabl'], $mysql_link)) { Ikke det at dette skal være noe du behøver å kjøre hver gang. Først legger du inn tabellene i MySQL, deretter kjører du koden. Du bør også sjekke data du legger inn i databasen din (se Hva betyr SQL injection?). function my_mysq_format_insert_string($tablename, array $values, $resource) { $tablename = mysql_real_escape_string($tablename, $resource); array_walk($values, 'my_mysql_real_escape_string', $resource) return "INSERT INTO {$config['tabl']} VALUES ('" . implode ("', '", $values) . "')"; } function my_mysql_real_escape_string(&$value, $key, $resource) { if (is_string($value)) { $value = mysql_real_escape_string($value, $resource); } else { //do nothing } } $insert_string = my_mysq_format_insert_string($config['tabl'], array('', $name, $body, $url, $email, $date, $ip), $mysql_link); $insert_data = mysql_query($insert_string); *utestet kode* Endret 16. juli 2008 av OISNOT Lenke til kommentar
Runar Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 Jeg tviler på at trådstarter har den nødvendige kunnskapen for å kunne lage egne funksjoner og klasser, OISNOT. Han har ikke en gang klart å forstå Captcha-koden han har funnet, ettersom han rett og slett har limt den inn i slutten av filen sin. Det står jo akkurat hva han skal gjøre, hvis han bare tar seg tid til å lese kommentarene. Lenke til kommentar
Tiniuspuza86 Skrevet 16. juli 2008 Forfatter Del Skrevet 16. juli 2008 Det var da veldig negative folk skulle være da. Jeg har faktisk utrolig lite peiling på php. Og jeg er heller ikke en hann Jeg syns faktisk ikke det var så lett å skjønne hvor jeg skulle lime inn de ulike scripta utfra det som sto i kommentarene der jeg fant captchakoden. Har endel forskjellige filer og hvilken det skal limes inn i og hvor i kodene finner jeg ikke ut. Har disse filene i gjesteboka fra før: admin.php config.php index.php innlogging.php shoutbox.php shoutbox.css style.css I tillegg har jeg disse filene til captcha koden: CaptchaSecurityImages.php form.php img.php monofont.ttf Dette ble ganske mye å få oversikten over for en jente som ikke har så mye erfaring med dette. Vil gjerne beholde den gjesteboka jeg har siden jeg liker utseendet på den veldig godt. Og brukte en stund på å få den slik jeg ønsket i utgangspunktet. Lenke til kommentar
Runar Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 Mente det ikke negativt, men det er bare at noen begynner å bli litt lei av folk som lager en post, limer inn masse uryddig kode og forventer at vi skal gjøre alt uten at de trenger å sette seg inn i det i det hele tatt. Jeg sier ikke at du skal lære deg alt om PHP, men det skader ikke å prøve seg fram . Da slipper du å være avhengig av andre hvis det skjer noe senere. Lenke til kommentar
OISNOT Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 Hvis du ikke får den koden til å funke, kan du prøve denne: http://research.microsoft.com/asirra/ Vet ikke om den blir noe enklere... Lenke til kommentar
Tiniuspuza86 Skrevet 16. juli 2008 Forfatter Del Skrevet 16. juli 2008 Mente det ikke negativt, men det er bare at noen begynner å bli litt lei av folk som lager en post, limer inn masse uryddig kode og forventer at vi skal gjøre alt uten at de trenger å sette seg inn i det i det hele tatt. Jeg sier ikke at du skal lære deg alt om PHP, men det skader ikke å prøve seg fram . Da slipper du å være avhengig av andre hvis det skjer noe senere. Har heller ikke sagt at jeg ikke prøver å lære meg noe selv Grunnen til at jeg har postet hele scriptet er at jeg ikke finner ut av det selv, og tenkte at folk kanskje kunne hjelpe meg med å finne feilen eller hva jeg kan forandre på for å få ting til å fungere. Trodde det var det et forum var til jeg? Å spørre om ting man ikke finner ut av selv? Lenke til kommentar
Runar Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 Følgende kode er ikke testet, og jeg har ikke gjort noe annet enn å plassere sikkerhetskodesjekken på riktig sted. <?php // INNTILLINGER // ////////////////// require_once('config.php'); /////////////////////////////////////////////////// // THE MAGIC!! (ikke rør, Gud vil bannlyse deg!) // /////////////////////////////////////////////////// // KOBLE TIL // /////////////////////// $mysql_link = mysql_connect($config['host'], $config['user'], $config['pass']) or die("Kunne ikke koble til databasen på '{$config['host']}' med bruker '{$config['user']}'"); $mysql_db = mysql_select_db($config['db']) or die("Kunne ikke velge databasen '{$config['db']}' på '{$config['host']}'."); // Sjekke om tabellen finnes $table_exist = FALSE; $check_table = mysql_query("SHOW TABLES"); while ($table = mysql_fetch_array($check_table)) { if (in_array($config['tabl'], $table)) { $table_exist = TRUE; } } if ($table_exist == FALSE) { echo "Tabellen finnes ikke. Lager tabell."; $create_table = mysql_query("CREATE TABLE `{$config['tabl']}` ( `id` int(4) NOT NULL auto_increment, `name` varchar(50) NOT NULL, `body` varchar(400) NOT NULL, `url` varchar(50) default NULL, `email` varchar(50) default NULL, `date` datetime NOT NULL, `ip` varchar(15) NULL, KEY `id` (`id`) ) TYPE=MyISAM"); echo mysql_error(); } // HVIS KLART FOR Å LEGGE INN // //////////////////////////////// $name = trim($_POST['name']); $body = trim($_POST['body']); if (!empty($name) AND !empty($body)) { // SAMLE INN OG FORMATERE DATA $name = htmlentities($name); $name = wordwrap($name, $config['wrap'], ' ', 1); $body = htmlentities($body); $body = nl2br($body); $body = wordwrap($body, $config['wrap'], ' ', 1); $email = trim($_POST['email']); if (!empty($email)) { $email_pattern = '/(^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$)/'; $email_match = preg_match($email_pattern, $email); if ($email_match == FALSE) { $email = NULL; } } else { $email = NULL; } $url = trim($_POST['url']); if (!empty($url)) { $url_parse = parse_url($url); if (empty($url_parse['scheme'])) { $url = 'http://' . $url; } $url_pattern = '/(^(http:\/\/){0,1}(www\.){0,1}([a-z0-9-]+\.){1,2}([a-z]{2,4})(\/[_a-z0-9-]+)*(\?){0,1}([_a-z0-9]+\=[_a-z0-9]+(\&){0,1})*$)/'; $url_match = preg_match($url_pattern, $url); if ($url_match == FALSE) { $url = NULL; } } else { $url = NULL; } // LAG DATO $date = date('Y-m-d H:i:s'); // FINN IP $ip = $_SERVER['REMOTE_ADDR']; if(($_SESSION['security_code'] == $_POST['security_code']) && (!empty($_SESSION['security_code'])) ) { // SEND SPØRRING $insert_data = mysql_query("INSERT INTO {$config['tabl']} VALUES ('', '$name', '$body', '$url', '$email', '$date', '$ip')"); // Sjekk resultat if ($insert_data == TRUE) { echo $config['hils']; } else { echo 'Handlingen var mislykket<br>'. mysql_error(); } unset($_SESSION['security_code']); } else { echo '<h1>Feil sikkerhetskode!</h1>'; } } // VIS INNLEGG // ////////////////////////// ?> <!-- START SHOUTBOX --> <div id="shoutbox"> <div id="shout-header"> <h3 align="center"></h3> </div> <p><a href='?newshout' title='Åpner boksen du kan skrive i'><h4>Skriv ny melding</h4></a></p> <?php // HVILKET INNLEGG BEGYNNER? if (isset($_GET['showfrom']) AND is_numeric($_GET['showfrom'])) { $config['from'] = $_GET['showfrom']; } // SEND SPØRRING OG LOOP ARRAY $get_data = mysql_query("SELECT * FROM {$config['tabl']} ORDER BY date DESC LIMIT {$config['from']}, {$config['num']}"); while ($data = mysql_fetch_array($get_data)) { echo "<div class='shout-post'>\n"; if (!empty($data['url'])) { echo "<p class='shout-user'><a href='{$data['url']}' title='Gå til hjemmesiden til {$data['name']}'><b>{$data['name']}</a> sa:</b></p>\n"; } else { echo "<p class='shout-user'><b>{$data['name']} sa:</b></p>\n"; } echo "<p>{$data['body']}</p>"; if (!empty($data['email'])) { echo "<div class='shout-mail'><a href='mailto:{$data['email']}' title='Send mail til {$data['name']}'></a></div>\n"; } echo "<p class='shout-date'>{$data['date']}</p> </div>\n"; } // FLERE SIDER MED INNLEGG? if (mysql_num_rows($get_data) == $config['num']) { $nextfrom = $config['from'] + $config['num']; echo "<div id='next-shout'><a href='?showfrom={$nextfrom}' class='next'>Neste -></a></div>"; } ?> <!-- SKRIV NYTT INNLEGG --> <script type="text/javascript"> <!-- // BYTTER PÅ Å VISE OG SKJULE <div> kalt 'shout-new' function toggleLayer() { var whichLayer = 'shout-new'; var style2 = document.getElementById(whichLayer).style; if (document.getElementById(whichLayer).style.display == "hidden") { style2.display = style2.display? "":"block"; } else { style2.display = style2.display? "":"none"; } } // SKRIVER UT LINK FOR Å TRIGGE toggleLayer() document.write('<p><a href="java script:toggleLayer()" title="Åpner boksen du kan skrive i."><h4>Skriv ny melding</h4></a></p>'); // SKRIVER UT DEN ØVRIGE FORMEN document.write('<div id="shout-new" style="display:none;"><form method="post" action="?"><p><label> <label for="name">Name: </label><input type="text" name="name" id="name" /><br /> <label for="email">Email: </label><input type="text" name="email" id="email" /><br /> <label for="message">Message: </label><textarea rows="5" cols="30" name="message" id="message"></textarea><br /> <img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /><br /> <label for="security_code">Security Code: </label><input id="security_code" name="security_code" type="text" /><br /> <input type="submit" name="submit" value="Submit" /> </form> --> </script> <?php if (isset($_GET['newshout'])) { ?> <div id="shout-new"> <p><a href='?' title='Lukker boksen du kan skrive i'><h4>Lukk melding</h4></a></p> <form method="post" action="?"> <p><label>Navn <input type="text" name="name"></label><br> <label></label> <label>Hjemmeside* <input type="text" name="url"></label><br> <label>Melding <textarea name="body"></textarea></label><br> <span class="tiny">* betyr valgfritt</span><br> </td></tr></table> <img src="CaptchaSecurityImages.php" /> Security Code: <input id="security_code" name="security_code" type="text" /> <input type="submit" value="Send"></p> </form> </div> <?php } else { ?> <noscript> <div id='shout-new'> </div> </noscript> <?php } ?> </div> <!-- SLUTT SHOUTBOX --> Lenke til kommentar
Tiniuspuza86 Skrevet 16. juli 2008 Forfatter Del Skrevet 16. juli 2008 (endret) Nå virker det som om ting går framover her etter jeg prøvde koden du limte inn her. Nå får man ikke skrevet innlegg uten koden, men får beskjed hver gang at koden er feil Vet at koden jeg har skrevet inn er riktig, men tyder på at det må være en liten feil en plass. Vet bare ikke hva jeg skal lete etter. Endret 16. juli 2008 av Tiniuspuza86 Lenke til kommentar
Runar Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 (endret) Da må du nesten poste innholdet i CaptchaSecurityImages.php og alle andre filer som har noe med sikkerhetskoden å gjøre. Edit: Har du startet sessions noe sted? Hvis ikke, legg session_start() øverst. Endret 16. juli 2008 av Runar Lenke til kommentar
Epower Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 (endret) Slett Endret 16. juli 2008 av Eirikkkkk Lenke til kommentar
Tiniuspuza86 Skrevet 16. juli 2008 Forfatter Del Skrevet 16. juli 2008 Dette er CaptchaSecurityImages.php: <?php session_start(); class CaptchaSecurityImages { var $font = 'monofont.ttf'; function generateCode($characters) { /* list all possible characters, similar looking characters and vowels have been removed */ $possible = '23456789bcdfghjkmnpqrstvwxyz'; $code = ''; $i = 0; while ($i < $characters) { $code .= substr($possible, mt_rand(0, strlen($possible)-1), 1); $i++; } return $code; } function CaptchaSecurityImages($width='120',$height='40',$characters='6') { $code = $this->generateCode($characters); /* font size will be 75% of the image height */ $font_size = $height * 0.75; $image = @imagecreate($width, $height) or die('Cannot initialize new GD image stream'); /* set the colours */ $background_color = imagecolorallocate($image, 255, 255, 255); $text_color = imagecolorallocate($image, 20, 40, 100); $noise_color = imagecolorallocate($image, 100, 120, 180); /* generate random dots in background */ for( $i=0; $i<($width*$height)/3; $i++ ) { imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color); } /* generate random lines in background */ for( $i=0; $i<($width*$height)/150; $i++ ) { imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color); } /* create textbox and add text */ $textbox = imagettfbbox($font_size, 0, $this->font, $code) or die('Error in imagettfbbox function'); $x = ($width - $textbox[4])/2; $y = ($height - $textbox[5])/2; imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function'); /* output captcha image to browser */ header('Content-Type: image/jpeg'); imagejpeg($image); imagedestroy($image); $_SESSION['security_code'] = $code; } } $width = isset($_GET['width']) ? $_GET['width'] : '120'; $height = isset($_GET['height']) ? $_GET['height'] : '40'; $characters = isset($_GET['characters']) && $_GET['characters'] > 1 ? $_GET['characters'] : '6'; $captcha = new CaptchaSecurityImages($width,$height,$characters); ?> Dette er form.php: <?php session_start(); if( isset($_POST['submit'])) { if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) { // Insert you code for processing the form here, e.g emailing the submission, entering it into a database. echo 'Thank you. Your message said "'.$_POST['message'].'"'; unset($_SESSION['security_code']); } else { // Insert your code for showing an error message here echo 'Sorry, you have provided an invalid security code'; } } else { ?> <form action="form.php" method="post"> <label for="name">Name: </label><input type="text" name="name" id="name" /><br /> <label for="email">Email: </label><input type="text" name="email" id="email" /><br /> <label for="message">Message: </label><textarea rows="5" cols="30" name="message" id="message"></textarea><br /> <img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /><br /> <label for="security_code">Security Code: </label><input id="security_code" name="security_code" type="text" /><br /> <input type="submit" name="submit" value="Submit" /> </form> <?php } ?> Og den siste er img.php: <?php function genText($length) { $p_chars="AGHACEFHJKRSTVXY124579"; // can be any set of characters while(strlen($out_str)< $length) { $out_str.=substr($p_chars,(rand()%(strlen($p_chars))),1); } return $out_str; } $rand_string = genText(6); // your image generation functionality goes afterwards... ?> <body> </body> </html> Da må du nesten poste innholdet i CaptchaSecurityImages.php og alle andre filer som har noe med sikkerhetskoden å gjøre. Edit: Har du startet sessions noe sted? Hvis ikke, legg session_start() øverst. Hvor skal den legges? i Shoutbox.php? Lenke til kommentar
Epower Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 Legg session_start(); øverst i Shoutbox.php Lenke til kommentar
Runar Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 Øverst i Shoutbox.php, eller lag en fil som du inkluderer i alle de andre filene, og start sessionen der . Mange måter å gjøre det på. Lenke til kommentar
Tiniuspuza86 Skrevet 16. juli 2008 Forfatter Del Skrevet 16. juli 2008 (endret) La den øverst i shoutbox.php nå, og får denne feilmeldingen når jeg åpner gjesteboka: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /usr/home/web/*********/tina/shoutbox/index.php:8) in /usr/home/web/*********/tina/shoutbox/shoutbox.php on line 1 edit: Nå får jeg skrevet innlegg med koden og det fungerer greit Vil bare ha vekk denne feilmeldinga som vises øverst hvis det er mulig. Endret 16. juli 2008 av Tiniuspuza86 Lenke til kommentar
Runar Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 Hva har du på linje 1? Inkluderer du en fil eller noe? Lenke til kommentar
Tiniuspuza86 Skrevet 16. juli 2008 Forfatter Del Skrevet 16. juli 2008 (endret) Hva har du på linje 1? Inkluderer du en fil eller noe? Dette står på linje 1: <?php session_start(); Får jo skrevet innlegg, og alt virker greit sånn, men den feilmeldinga er jo litt dum å ha der Ligger feilen som gjør at denne feilmeldinga kommer opp i det samme scriptet eller kan det ligge i et annet? Endret 16. juli 2008 av Tiniuspuza86 Lenke til kommentar
Tiniuspuza86 Skrevet 16. juli 2008 Forfatter Del Skrevet 16. juli 2008 Hmm, er det ingen her som vet hvordan jeg får bort denne feilmeldingen? Den står der hele tiden. Lenke til kommentar
nree Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 Du inkluderer shoutbox scriptet i en index fil eller noe slikt? Den filen som brukeren laster må ha <?php ob_start(); ?> øverst i scriptet. ob_start gjør at hele siden genereres før den sendes til brukeren, dermed blir ting som påvirker headeren (som session_start()) plassert i headeren. Lenke til kommentar
Lokaltog Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 Du inkluderer shoutbox scriptet i en index fil eller noe slikt? Den filen som brukeren laster må ha <?php ob_start(); ?> øverst i scriptet. ob_start gjør at hele siden genereres før den sendes til brukeren, dermed blir ting som påvirker headeren (som session_start()) plassert i headeren. Dette er en svært dårlig måte å løse problemet på! Det kan godt hende filen f.eks. er en UTF-8-fil med BOM, og i så fall vil ikke output buffering funke i dette tilfellet. Det enkleste er om trådstarter kan legge ut index.php i forumet (last opp selve fila, ikke copy/paste koden), slik at det er mulig å se hva som eventuelt er feil i fila. Problemet skyldes alltid en form for output (whitespace eller BOM) før session_start(), og den beste måten å løse problemet på er å finne kilden til problemet og fikse på den, istedenfor å skjule problemet med f.eks. output buffering. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå