Gå til innhold

Sette sperre! Hjelp


Anbefalte innlegg

Koss kan eg sette ein sperre viss brukeren ikkje har nokk penger til å reise??

 

 

Sei viss brukeren har 1000 kr og det koster 1001 kr for å reise... så ska han ikke kunne reise!...

 

Kode:

<?
ob_start();
include("config.php");
if ($logged[username])


{
// the user is logged in!  We continue...
if (!$_POST[update])
{

echo("
<center><form method=\"POST\">
 <p>
   <label>
     <input type=\"radio\" name=\"by\" value=\"Oslo\" id=\"Reise_0\">
     Oslo</label>
   <br>
   <label>
     <input type=\"radio\" name=\"by\" value=\"Bergen\" id=\"Reise_1\">
     Bergen</label>
   <br>
   <label>
     <input type=\"radio\" name=\"by\" value=\"Stavanger\" id=\"Reise_2\">
     Haugesund</label>
   <br>
 </p>
 <input type=\"submit\" name=\"update\" value=\"Update\"></td>

 <label></label>
 <p> </p>
</form>

</center>");
}
else
{
$by = htmlspecialchars($_POST[by]);
// the above lines get rid of all html.
echo ("Velkommen til $_POST[by]!");
$update = mysql_query("UPDATE users SET `by` = '$by' where username = '$logged[username]'");
$update = mysql_query("UPDATE users SET penger = penger - 1001 WHERE username = '$logged[username]'");

// updates the information in the database.
}
}
else
{
// They aren't logged in!
echo ("");
}
?>

Lenke til kommentar
Videoannonse
Annonse

Her var det mye rart å ta tak i.

Vi starter på toppen.

 

1. Short-tags er noe man IKKE bør bruke. Søk litt rundt på forumet så finner du ut at dette er en mening alle deler. Det fjernes forøvrig totalt i PHP6, og du vil få problemet om webhosten slår det av, eller du bytter til en ny host som har dette av. Bytt ut alle <? med <?php.

 

2. Alle arraynøkler skal innkapsles med fnutter.

$_POST[update] => $_POST['update']

$logged[username] => $logged['username']

 

3. if (!$_POST[update]), den er ikke særlig elegant. if( !isset( $_POST['update'] ) ) ser penere ut. Mulig det funker bedre også.

 

4. Bruk echo ' '; om du ikke har noen variabler som skal printes direkte i echo. Man tjener vistnok et par microsekunder på det, da PHP ikke går gjennom teksten og leter etter variabler. Da kan du samtidig kvitte deg med escapeing( \"tekst\" ) av " ".

 

5. Koden din kan ikke bli Valid (X)HTML. method="POST" skal være method="post". Mulig at action="" er et påkrevd parameter. Dette kommer vel ann på hvilken DOCTYPE man bruker.

 

6. Slutt å lag enkle små kodesnutter i WYSIWYG-editorer. De har en tendens til å lage masse unødvendig kode som dett:

<label></label>
<p> </p>

 

7.

$update = mysql_query("UPDATE users SET `by` = '$by' where username = '$logged[username]'");
$update = mysql_query("UPDATE users SET penger = penger - 1001 WHERE username = '$logged[username]'");

Disse to kan slåes sammen til ett query.

$update = mysql_query("UPDATE users SET `by` = '$by', penger = penger-1001 WHERE username = '{$logged['username']}'");

Ta også nytte av $update for å sjekke at spørringen faktisk ble godtatt.

if( $update === FALSE )
{
 echo mysql_error();
}

 

 

For å hive inn den berømte "sperren" som var spørsmålet ditt, må du først kjøre en spørring som sjekker hvor mange penger brukeren faktisk har.

}
else
{
 $by = htmlspecialchars($_POST[by]);

 $q = "SELECT penger FROM users WHERE id='{$logged['id']}'";
 $res = mysql_query( $q );
 $user = mysql_fetch_assoc( $res );

 if( $user['money'] > 1001 )
 {
   $update = mysql_query("UPDATE users SET `by` = '$by', penger = penger-1001 WHERE username = '{$logged['username']}'");
   
   if( $update === TRUE )
   {
     echo "Velkommen til {$by}";
   }
 }
}

Lenke til kommentar
  • 4 måneder senere...

Emnetittelen i denne tråden er lite beskrivende for trådens innhold og det er derfor ingen god emnetittel. Jo bedre og mer beskrivende emnetittelen er, jo lettere er det for andre å skjønne trådens innhold og det vil være lettere å treffe den riktige forumbrukeren med det rette svaret. Ber deg derfor om å endre emnetittel slik at du unngår at en moderator stenger tråden. Vennligst forsøk å ha dette i tankene neste gang du starter en tråd, og orienter deg om hva vår nettikette sier om dårlig bruk av emnetitler.

 

Bruk p_edit.gif-knappen i første post for å endre emnetittelen.

 

(Dette innlegget vil bli fjernet ved endring av emnetittel. Ikke kommenter dette innlegget, men p_report.gif gjerne dette innlegget når tittelen er endret, så vil det bli fjernet..)

Lenke til kommentar
1. Short-tags er noe man IKKE bør bruke. Søk litt rundt på forumet så finner du ut at dette er en mening alle deler. Det fjernes forøvrig totalt i PHP6, og du vil få problemet om webhosten slår det av, eller du bytter til en ny host som har dette av. Bytt ut alle <? med <?php.

den fjernes ikke i PHP6.

hvis du søker i php's møtereferater, så ser du at de har bestemt for å beholde shorttags i PHP6, men å kvitte seg med %% (asp tag style)...

men enig i at man bør holde seg til long tags, av den enkle grunn av at shorttags er konfigurerbar av/på og at det er stor sannsynlighet for at den blir fjernet en gang i fremtiden.

Lenke til kommentar

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...