Kom ihåg mig?
Home Menu

Menu


Else if sats

 
Ämnesverktyg Visningsalternativ
Oläst 2006-03-20, 23:27 #1
Iceyes Iceyes är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2006
Inlägg: 16
Iceyes Iceyes är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2006
Inlägg: 16
Nu vet jag inte riktigt om det här är rätt forum att lägga upp den här typen av frågor,
men jag gör ett försök.
Har lite problem med med en else if sats här nedan syftet är att den ska skriva vad man gjort för fel om satsen inte går igenom och även se till att medelandet inte skickas.
Den skriver ut felmedelandena men den trots det skickar den upp allt till databasen.
nu är säkert det här jättelätt att lösa men jag är nybörjare inom php.

Kod:
if (isset($_POST['post'])) {
	$nick = strip_tags($_POST['nick']);
	$message = strip_tags($_POST['message']);
	$ip = $_SERVER['REMOTE_ADDR'];
	$nicklength = strlen($nick);
	$messagelength = strlen($message);
	
	if ($nicklength > 15) {
 echo 'Nickname was too long.';
 }
 	elseif ($nicklength < 3) {
 } else {
  echo 'Nickname was too short.';
	}
	if ($messagelength > 200) {
 echo 'Message was too long.';
 }
 	elseif ($messagelength < 5) {
 echo 'Message was too short.';
 	}
	if (isset($nick) && empty($message)) {
 echo 'Please fill in both fields.';
	}   
	$nick = strip_tags($_POST['nick']);
	$message = strip_tags($_POST['message']);
Iceyes är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-03-20, 23:38 #2
Netikett Netikett är inte uppkopplad
Flitig postare
 
Reg.datum: Nov 2004
Inlägg: 425
Netikett Netikett är inte uppkopplad
Flitig postare
 
Reg.datum: Nov 2004
Inlägg: 425
if bla bla bla then

elseif bla bla bla then

else
'Här hamnar allt annat
End if
Netikett är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-03-21, 00:58 #3
Lundstedt Lundstedt är inte uppkopplad
Medlem
 
Reg.datum: Jan 2005
Inlägg: 136
Lundstedt Lundstedt är inte uppkopplad
Medlem
 
Reg.datum: Jan 2005
Inlägg: 136
Anledning till ditt problem är att du säger bara åt scriptet att skriva ut text om det hittas några fel, men du säger inte åt det att samtidigt inte lägga in uppgifterna i databasen. Ett enkelt sätt du kan göra är att innan din a if-satser sätta $error = FALSE; och i varje if-sats, under felmeddelandet, sätta $error = TRUE;. När det väl är dags att skicka uppgifterna till databasen gör du:
Kod:
if ($error === FALSE) {
  ... kod som ska köras om inga fel hittats ...
}
Ett annan strategi, som jag ofta använder, är att stoppa varje felmeddelande i en vektor. Då kan du på slutet antingen godkänna uppgifterna eller lista ALLA fel. Ett exempel tillsammans med din kod skulle kunna vara följande för dina if-satser:
Kod:
if ($nicklength > 15) {
  $error[] = 'Nickname was too long.';
}
if ($nicklength < 3) {
  $error[] = 'Nickname was too short.';
}
if ($messagelength > 200) {
  $error[] = 'Message was too long.';
}
if ($messagelength < 5) {
  $error[] = 'Message was too short.';
}
if (isset($nick) && empty($message)) {
  $error[] = 'Please fill in both fields.';
}
Följande för att godkänna eller lista fel:
Kod:
if (count($error) == 0) {
  ... inga fel ...
} else {
  echo 'The following errors were found in your submission:';
  echo '<ul>';
  foreach ($error as $fel) {
    echo '<li>' . $fel . '</li>';
  }
  echo '</ul>'
}
Lundstedt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-03-21, 01:02 #4
Netikett Netikett är inte uppkopplad
Flitig postare
 
Reg.datum: Nov 2004
Inlägg: 425
Netikett Netikett är inte uppkopplad
Flitig postare
 
Reg.datum: Nov 2004
Inlägg: 425
Hmm. Jag missuppfattade tråden helt va? ;-)
Netikett är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-03-21, 10:33 #5
Iceyes Iceyes är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2006
Inlägg: 16
Iceyes Iceyes är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2006
Inlägg: 16
Tack Lundstedt ska testa det där så fort jag kommer hem.
Återkommer om det blir några problem vilket jag inte hoppas
Iceyes är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-03-21, 19:42 #6
Iceyes Iceyes är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2006
Inlägg: 16
Iceyes Iceyes är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2006
Inlägg: 16
nu efter timmars grejande känns det som jag inte lyckas komma fram till nån lösning om inte annat har jag missuppfattat dig
jag testade flytta om koden osv det leder bara till alla möjliga problem
det här är det jag får att fungera bäst nu skickar den ingenting alls hur man än skriver men den skriver felmedelandena

Kod:
if (isset($_POST['post'])) {
	$nick = strip_tags($_POST['nick']);
	$message = strip_tags($_POST['message']);
	$ip = $_SERVER['REMOTE_ADDR'];
	$nicklength = strlen($nick);
	$messagelength = strlen($message);
}
	
if ($nicklength > 15) {
  $error[] = 'Nickname was too long.';
}
if ($nicklength < 3) {
  $error[] = 'Nickname was too short.';
}
if ($messagelength > 200) {
  $error[] = 'Message was too long.';
}
if ($messagelength < 5) {
  $error[] = 'Message was too short.';
}
if (isset($nick) && empty($message)) {
  $error[] = 'Please fill in both fields.';
}
if (count($error) == 0) {
} else {
  echo 'The following errors were found in your submission:';
  echo '<ul>';
  foreach ($error as $fel) {
    echo '<li>' . $fel . '</li>';
  }
  echo '</ul>';
}
Här är koden som går till databasen där även if ($error === FALSE) { ligger
Kod:
}if ($error === FALSE) {
	$ip = $_SERVER['REMOTE_ADDR'];
	if (($nick == $loginname) || ($message == $loginpass)) {
 mysql_connect($host, $user, $pass) or die ();
 mysql_select_db($name) or die ();
 $query = "SELECT nickname, message, id FROM shoutbox ORDER BY id DESC";
 $result = mysql_query($query);
 while ($res = mysql_fetch_array($result)) {
 	echo '<b>'.$res[nickname].'</b>says:<br />'.$res[message].'<br /><form method="post" action=""><input type="submit" name="delete" value="Delete" /><input type="hidden" name="id" value="'.$res[id].'" /></form><hr width="90%" size="1" color="#000000" align="left">';
 }
	exit();
	}
	mysql_connect($host, $user, $pass) or die ();
	mysql_select_db($name) or die ();
	$query = "INSERT INTO shoutbox (nickname, message, ip) VALUES ('$nick','$message','$ip')";
	mysql_query($query);
 echo 'Thanks for the shout!<br /><br />';
	mysql_close();
	mysql_connect($host, $user, $pass) or die ();
	mysql_select_db($name) or die ();
	$query = "SELECT nickname, message FROM shoutbox ORDER BY id DESC";
	$result = mysql_query($query);
	while ($res = mysql_fetch_array($result)) {
 echo '<b>'.$res[nickname].'</b>says:<br />'.$res[message].'<hr width="90%" size="1" color="#000000" align="left">';
 }
} else {
	mysql_connect($host, $user, $pass) or die ();
	mysql_select_db($name) or die ();
	$query = "SELECT nickname, message FROM shoutbox ORDER BY id DESC";
	$result = mysql_query($query);
	while ($res = mysql_fetch_array($result)) {
 echo '<b>'.$res[nickname].'</b>says:<br />'.$res[message].'<hr width="90%" size="1" color="#000000" align="left">';
	}
}
Koden är väldigt rörig men men
hoppas någon vet vad som är fel
Iceyes är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-03-22, 03:00 #7
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
ja, lite rörigt...
Vad är poängen med att ha:
Citat:
or die ();
(i synnerhet om du har problem med koden är det ju bra att få felmeddelanden)
varför
Citat:
$error === FALSE
istället för if($error) …?
varför ha en tom if-sats
Citat:
if (count($error) == 0) {
} else {
istället för if(count($error)) { echo 'The following errors … eller if($error)

ps. snygg lösning med lista på fel man knappat in.
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-03-22, 03:10 #8
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Citat:
Originally posted by Killen@Mar 21 2006, 00:38
if bla bla bla then

elseif bla bla bla then

else
'Här hamnar allt annat
End if
jag har en känsla av att du pratar asp och inte php...
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-03-22, 12:38 #9
Iceyes Iceyes är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2006
Inlägg: 16
Iceyes Iceyes är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2006
Inlägg: 16
lyckades lösa problemet igenom att ersätta
Citat:
$error === FALSE }
med
Citat:
if (count($error) == 0)
Iceyes är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-03-22, 19:31 #10
bivald bivald är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 207
bivald bivald är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 207
Om jag inte missat något vissentligt? Var validerar du din input (GET/POST)? strip_tags tar väl inte bort single/double quotes och således är det rätt lätt att köra en SQL injection?
bivald är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 08:06.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017