Kom ihåg mig?
Home Menu

Menu


Stora bokstäver blir ändå små i detta PHP-script

Ämnesverktyg Visningsalternativ
Oläst 2013-01-20, 02:45 #1
Dakotas avatar
Dakota Dakota är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Nov 2009
Inlägg: 1 298
Dakota Dakota är inte uppkopplad
Har WN som tidsfördriv
Dakotas avatar
 
Reg.datum: Nov 2009
Inlägg: 1 298
Standard Stora bokstäver blir ändå små i detta PHP-script

Hej! Jag har köpt ett php-script av en kille som fungerar väldigt bra, saken är bara den att när en person beställer ett guldigt namn till exempel, så spelar det ingen roll om personen heter t.ex JONAS, för scriptet kommer ge honom namnet jonas - alltså inga stora bokstäver fungerar.

PHP-kod:
if ($sms['1'] == "guld") { echo "Ditt namn har nu fått en guldig färg."$ws->doCommandAsConsole("nick ".$sms['2']." &6".$sms['2'].""); 
                                                                                             
$ws->doCommandAsConsole("bcast ".$sms['2']." har köpt guldigt namn!"); } 
".$sms['2']." representerar personens namn.

Kan PHP-script inte känna av när folk använder stora bokstäver eller vad är det som är knasigt?
Dakota är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-20, 10:23 #2
Nihilnovi Nihilnovi är inte uppkopplad
Medlem
 
Reg.datum: Jun 2008
Inlägg: 233
Nihilnovi Nihilnovi är inte uppkopplad
Medlem
 
Reg.datum: Jun 2008
Inlägg: 233
På Windows matchar 'GULD' och 'guld' både gULd och GulD osv. PHP använder OS funktioner internt för att känna av stora & små bokstäver på t.ex include & require.

På Linux är allting case-sensitivt, dvs GULD matchar endast GULD.

Du kan söka i koden för kommandot "doCommandAsConsole" och se om den kör strtolower($var) någonstans, ta bort det och testa igen.
Nihilnovi är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-20, 12:32 #3
Dakotas avatar
Dakota Dakota är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Nov 2009
Inlägg: 1 298
Dakota Dakota är inte uppkopplad
Har WN som tidsfördriv
Dakotas avatar
 
Reg.datum: Nov 2009
Inlägg: 1 298
Citat:
Ursprungligen postat av Nihilnovi Visa inlägg
På Windows matchar 'GULD' och 'guld' både gULd och GulD osv. PHP använder OS funktioner internt för att känna av stora & små bokstäver på t.ex include & require.

På Linux är allting case-sensitivt, dvs GULD matchar endast GULD.

Du kan söka i koden för kommandot "doCommandAsConsole" och se om den kör strtolower($var) någonstans, ta bort det och testa igen.
Hej! Har detta någon betydelse? Hittade det i koden:

PHP-kod:
 $sms explode(' ',strtolower($_REQUEST['sms'])); // Låt vara // Låt vara 
Dakota är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-20, 12:42 #4
jonssondesign jonssondesign är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2010
Inlägg: 709
jonssondesign jonssondesign är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2010
Inlägg: 709
Japp det har den nog högst troligen.

Det koden gör är att den delar upp strängen $_REQUEST['sms'] i olika delar vid varje mellanslag, och lägger sedan in det i en array som heter $sms.

Sen har du, precis som du misstänkte, strtolower (String to lowercase). Och det är precis där ditt "fel" ligger. Testa byt ut den där kodsnutten till:

PHP-kod:
$sms explode(' ',$_REQUEST['sms']); // Låt vara // Låt vara 
jonssondesign är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-20, 13:17 #5
Nihilnovi Nihilnovi är inte uppkopplad
Medlem
 
Reg.datum: Jun 2008
Inlägg: 233
Nihilnovi Nihilnovi är inte uppkopplad
Medlem
 
Reg.datum: Jun 2008
Inlägg: 233
Citat:
Ursprungligen postat av Dakota Visa inlägg
Hej! Har detta någon betydelse? Hittade det i koden:

PHP-kod:
 $sms explode(' ',strtolower($_REQUEST['sms'])); // Låt vara // Låt vara 
Det är där felet i logiken ligger.

Det som sker är att texten som finns i $sms delas upp på mellanrum och varje ord som skapas då görs om till små bokstäver.

För att lösa problemet och få den funktionalitet du vill, byt ut strängen till:

PHP-kod:
 $sms explode(' ',$_REQUEST['sms']); // Låt vara // Låt vara 
Det kan dock finnas en orsak till varför utvecklaren har valt att normalisera strängen till endast små bokstäver, ändringar gör du på egen risk!
Nihilnovi är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-20, 13:26 #6
Dakotas avatar
Dakota Dakota är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Nov 2009
Inlägg: 1 298
Dakota Dakota är inte uppkopplad
Har WN som tidsfördriv
Dakotas avatar
 
Reg.datum: Nov 2009
Inlägg: 1 298
Citat:
Ursprungligen postat av jonssondesign Visa inlägg
Japp det har den nog högst troligen.

Det koden gör är att den delar upp strängen $_REQUEST['sms'] i olika delar vid varje mellanslag, och lägger sedan in det i en array som heter $sms.

Sen har du, precis som du misstänkte, strtolower (String to lowercase). Och det är precis där ditt "fel" ligger. Testa byt ut den där kodsnutten till:

PHP-kod:
$sms explode(' ',$_REQUEST['sms']); // Låt vara // Låt vara 
Hej! Det fungerade på sätt och vis, scriptet verkade förstå stora bokstäver, däremot så slutade större delen av de övriga funktionerna att fungera av någon anledning. När jag försökte simulera ett köp av VIP så ekade det tomt tillbaka, och ingen operation utfördes. Det gick heller inte att beställa just färgat namn, men så fort jag ändrade tillbaka till
PHP-kod:
$sms explode(' ',strtolower($_REQUEST['sms'])); // Låt vara // Låt vara 
så fungerade allt igen.

Har sökt igenom hela scriptet och hittar inte liknande kod på något annat ställe, så jag förstår inte varför det inte fungerar. Det måste dock finnas någon anledning till att det står Låt vara och att koden ligger där
Dakota är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-20, 14:00 #7
jonssondesign jonssondesign är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2010
Inlägg: 709
jonssondesign jonssondesign är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2010
Inlägg: 709
haha ja troligen

Vad tror du om du gör såhär? Kör med koden jag gav dig först.

Efter if-koden som du visade i första inlägget, så skriver du den "riktiga" koden igen. Förstår du?

Min kod
Första inläggets kod (if ($sms['1'] =......)
Den riktiga koden ($sms = explode(' ........)
jonssondesign är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-20, 14:59 #8
yakuzaemmes avatar
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2012
Inlägg: 773
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
yakuzaemmes avatar
 
Reg.datum: Jun 2012
Inlägg: 773
Citat:
$namn = explode(' ', $_REQUEST['sms'])[2];
$sms = explode(' ',strtolower($_REQUEST['sms'])); // Låt vara, som vanligt
...
...
...
if ($sms['1'] == "guld")
{
echo "Ditt namn har nu fått en guldig färg.";
$ws->doCommandAsConsole("nick ".$namn." &6".$namn."");

$ws->doCommandAsConsole("bcast ".$namn." har köpt guldigt namn!");
}
Nog det enklaste sättet att göra det på iom. att vi inte har tillgång till hela koden.
yakuzaemme ä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 06:47.

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