FAQ |
Kalender |
2006-03-20, 23:27 | #1 | ||
|
|||
Nykomling
|
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']); |
||
Svara med citat |
2006-03-20, 23:38 | #2 | ||
|
|||
Flitig postare
|
if bla bla bla then
elseif bla bla bla then else 'Här hamnar allt annat End if |
||
Svara med citat |
2006-03-21, 00:58 | #3 | ||
|
|||
Medlem
|
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 ... } 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.'; } 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>' } |
||
Svara med citat |
2006-03-21, 01:02 | #4 | ||
|
|||
Flitig postare
|
Hmm. Jag missuppfattade tråden helt va? ;-)
|
||
Svara med citat |
2006-03-21, 10:33 | #5 | ||
|
|||
Nykomling
|
Tack Lundstedt ska testa det där så fort jag kommer hem.
Återkommer om det blir några problem vilket jag inte hoppas |
||
Svara med citat |
2006-03-21, 19:42 | #6 | ||
|
|||
Nykomling
|
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>'; } 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">'; } } hoppas någon vet vad som är fel |
||
Svara med citat |
2006-03-22, 03:00 | #7 | |||
|
||||
Mycket flitig postare
|
ja, lite rörigt...
Vad är poängen med att ha: Citat:
varför Citat:
varför ha en tom if-sats Citat:
ps. snygg lösning med lista på fel man knappat in. |
|||
Svara med citat |
2006-03-22, 03:10 | #8 | |||
|
||||
Mycket flitig postare
|
Citat:
|
|||
Svara med citat |
2006-03-22, 12:38 | #9 | ||
|
|||
Nykomling
|
lyckades lösa problemet igenom att ersätta
Citat:
Citat:
|
||
Svara med citat |
2006-03-22, 19:31 | #10 | ||
|
|||
Medlem
|
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?
|
||
Svara med citat |
Svara |
|
|