Gå til innhold

Hvilken funksjon bruker dette forumet på en enter funksjon ?


Anbefalte innlegg

Skrevet

Hva bruker dette ?

 

Finnes det andre muligheter enn <br> ?

 

 

Når man skriver noe html, eller <br> kommer det jo ikke ny linje men når jeg trykker enter kommer det likevell en ny linje.

 

Hvordan går det ann ?

Videoannonse
Annonse
Skrevet

Jeg er ikke helt sikker på hva du mener...

 

Du sier at hvis du skriver <br /> så kommer det ny linje, men du vil ha det slik at man bare trenger og trykke enter slik som forumet her?..

 

Dette forumet bruker en "Editor" (Husker ikke helt hva det eksakte navnet er) som skriver koden for brukeren.

 

Det finnes en ganske enkel editor, som heter Tiny MCE editor (google for it).

 

./Fredrik

Skrevet (endret)

når du skriver ett innlegg her skjer det minst 3 ting:

 

htmlspecialchars();, strip_tags(); eller htmlentities()

 

Fjerner alle tags eller viser de som htmlentities for å hindre at brukeren kan legge inn markup.

 

Alle bbcodes transformeres til aktuelle tags. (preg_replace())

 

Og newlines transformeres til <br /> tags. (nl2br())

 

edit:

funksjonen nl2br() tar en string og returnerer en string uten linjeskift men med <br /> i stedet.

 

$_POST['tekst'] = nl2br($_POST['tekst']);

Endret av grimjoey
Skrevet (endret)

$string = 'dette er en string 
med linjeskift';

echo $string:

 

returnerer:

 

dette er en string

med linjeskift

 

i html blir det

 

dette er en string med linjeskift

 

$string = nl2br('dette er en string 
med linjeskift');

eller

$string = nl2br($string);

(som er det samme etter at vi tidligere har satt $string)

 

returnerer:

 

dette er en string <br>med linjeskift

 

eller:

 

dette er en string <br />med linjeskift

 

i html blir det:

 

dette er en string

med linjeskift

Endret av grimjoey
Skrevet (endret)

Hver gang du trykker enter så blir det satt inn en linjeskift verdi/tegn. Det varrierer litt fra program til program hva som benyttes, noen bruker kun line feed (lf - \n - ascii verdi 10), andre carriage return (cr - \r - acsii verdi 13) og noen begge deler. Disse "symbolene" er normalt ikke synlig i vanlige editorer/tekstbehandlere, men kan gjerne sees i hex editorer o.l

 

nl2br leter etter linjeskift verdiene og erstatter dem med <br />.

 

Kan ikke så fryktelig mye om dette, så hvis noe er galt så vennligst korriger ;)

Endret av Crowly
Skrevet

Har fått til greia nå! :)

 

Se selv:

http://support-u.110mb.com/?side=gb

 

 

Men jeg trenger litt hjel enda, med en funksjon slik at - man må skrive minst 3 bokstaver på et felt. Denne koden har jeg skrevet:

if( $navn < 3 ) {
echo("Navnet må være lenger enn 3 tegn!");
}

 

Men den funker ikke. Hva er feil ?

Skrevet (endret)

eller sjekk om $navn{3} eksisterer ({3} henter ut den 4. bokstaven i en streng.)

 

if ($navn{3}) navn_er_lenger_en_3_bokstaver();

 

crowly: windows bruker CRLF, unix/linux bruker LF og mac bruker CR

CR = carriage return

LF = line feed

CRLF = carriage return + line feed

 

disse er standard ascii tegn akkurat som bokstaver, tall og andre tegn, men de vises ikke som noe annet en linjeskift (så sant ikke du har en hex editor eller en tekst editor med symboler for de)

 

edit: sånn sett er faktisk en tekst fil i windows 1 byte større per linje en tilsvarende fil laget i mac eller linux (nå skal det også sies at det finnes tekst editorer som har sin egen mening om hva som er rett og bruker for eksempel kun LF i windows)

 

btw: CR og LF stammer fra skrivemaskiner. carriage return er når skrivehodet returnerer til venstre. line feed er når papiret blir rullet en linje.

Endret av grimjoey
Skrevet

Skjønte ikke akkurat det der, grimjoey...

 

Men unasett jeg har tenkt å få trøkka inn denne koden:

if( $navn < 3 ) {
echo("Navnet må være lenger enn 3 tegn!");
}

 

 

I denne koden:

<?php

if (isset($_POST['e'])) {
if($_POST['navn'] == $_POST[''] ) {
echo("<div style='background-color:#000000;'><h3> * Du skrev ikke inn noe navn!</h3></div>");
}

else {

if($_POST['meld'] == $_POST[''] ) {
echo("<div style='background-color:#000000;'><h3> * Du skrev ikke inn noe hilsen!</h3></div>");
}

else {

$navn = $_POST['navn'];
$melding = $_POST['meld'];
$dato = date("F j, Y");
$tid = date("G.i.s");
$d = date("D");

$melding = htmlentities($melding);
$navn = htmlentities($navn);

$tekst="Inlegget er skrevet av <b>{$navn}</b>, Klokka: <b>{$tid} - {$dato}</b><br> <u>Tekst:</u><br>".nl2br($melding)."<br><hr><br>";
$file = fopen('inc/gb.txt', 'a+', 1);
fwrite($file, $tekst);
fclose($file);
{
echo "<div style='background-color:#000000;'><b><font color=green><h3>Din hilsen er lagt til! <a href='#bunn'><div class='ass'>trykk her for å se din hilsenen..</div></a></h3></font></b></div>";
}
}
}
}
?>

 

 

Der det står:

if($_POST['navn'] == $_POST[''] ) {
echo("<div style='background-color:#000000;'><h3> * Du skrev ikke inn noe navn!</h3></div>");
}

 

 

Helt øverst...

 

Kan noen hjelpe meg ? :p:) Fordi, det går ikke når jeg prøver - jeg kommer ikke fram til meldingen "Din hilsen er lagt til!" :S

Skrevet (endret)

Du bør indentere koden din ...

 

<?php

if (isset($_POST['e'])) {
if($_POST['navn'] == $_POST[''] ) {
	echo("<div style='background-color:#000000;'><h3> * Du skrev ikke inn noe navn!</h3></div>");
} else {

	if($_POST['meld'] == $_POST[''] ) {
		echo("<div style='background-color:#000000;'><h3> * Du skrev ikke inn noe hilsen!</h3></div>");
	} else {

		$navn = $_POST['navn'];
		$melding = $_POST['meld'];
		$dato = date("F j, Y");
		$tid = date("G.i.s");
		$d = date("D");

		$melding = htmlentities($melding);
		$navn = htmlentities($navn);

		$tekst="Inlegget er skrevet av <b>{$navn}</b>, Klokka: <b>{$tid} - {$dato}</b><br> <u>Tekst:</u><br>".nl2br($melding)."<br><hr><br>";
		$file = fopen('inc/gb.txt', 'a+', 1);
		fwrite($file, $tekst);
		fclose($file);

		{ // denne gjør ingenting
		echo "<div style='background-color:#000000;'><b><font color=green><h3>Din hilsen er lagt til! <a href='#bunn'><div class='ass'>trykk her for å se din hilsenen..</div></a></h3></font></b></div>";
		} // denne gjør ingenting 
	}
}
}

?>

 

litt lettere å se hva som skjer.

 

if($_POST['meld'] == $_POST[''] ) { ... }

og

if($_POST['navn'] == $_POST[''] ) { ... }

 

bør være:

 

if ( !isset( $_POST['meld'] ) || empty( $_POST['meld'] ) { ... }

og

if ( !isset( $_POST['navn'] ) || empty( $_POST['navn'] ) { ... }

 

 

eller som jeg bruker:

 

// sjekker om post og get variabel er satt og ikke tom.
// check_var( 'variabelnavn' ); for $_POST
// check_var( 'variabelnavn', 1 ); for $_GET
function check_var( $var, $type = 0 ) {
if ( $type === 0 ) $type =& $_POST;
else $type =& $_GET;
if ( isset( $type[$var] ) && !empty( $type[$var] ) ) return TRUE;
else return FALSE;
}

if ( !check_var( 'navn', ) ) { ... }
if ( !check_var( 'meld', ) ) { ... }

 

slik kan du skrive koden din:

<?php

function check_var( $var, $type = 0 ) {
if ( $type === 0 ) $type =& $_POST;
else $type =& $_GET;
if ( isset( $type[$var] ) && !empty( $type[$var] ) ) return TRUE;
else return FALSE;
}

if ( check_var( 'e' ) ) {
if ( check_var( 'navn' ) ) {
	if ( check_var( 'meld' ) ) {

		// navn og melding er tilstede

		if ( strlen($_POST['navn']) > 3 ) {

			// navn er lenger en 3 tegn.

		} else {

			// navn er kortere eller lik 3 tegn.

		}

	} else {

		// meld er tom eller ikke tilstede

	}
} else {

	// navn er tom eller ikke tilstede

}
}

?>

 

alternativt (gjør det samme men annen metodikk):

<?php

function check_var( $var, $type = 0 ) {
if ( $type === 0 ) $type =& $_POST;
else $type =& $_GET;
if ( isset( $type[$var] ) && !empty( $type[$var] ) ) return TRUE;
else return FALSE;
}

if ( check_var( 'e' ) ) {
if ( !check_var( 'navn' ) ) {

	// navn er tom eller eksisterer ikke.

} elseif ( !check_var( 'meld' ) ) {

	// melding er tom eller eksisterer ikke.

} elseif ( strlen($_POST['navn']) <= 3 ) {

	// navn er kortere eller lik 3 tegn.

} else {

	// navn og melding eksisterer og er ikke tomme. navn er lenger en 3 tegn.

}

}

?>

 

nå vil den kun finne den første feilen og gjøre det du vil den skal gjøre der. du kan endre elseif til kun if. da vil du ha muligheten til å skrive ut alle feilene til brukeren. (du vil i så tilfelle kunne få en notice error dersom $_POST['navn'] eksisterer men er mellom 1 og 3 tegn. man skal helst ikke forsøke å lese fra variabler man ikke vet er satt. man bør sjekke med isset() først dersom man ikke vet)

Endret av grimjoey

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...