Gjest Slettet+142 Skrevet 26. februar 2008 Del Skrevet 26. februar 2008 \\ Linje 24 er nok feilen. kommentarer markeres med // Lenke til kommentar
j-- Skrevet 26. februar 2008 Del Skrevet 26. februar 2008 Ellers så kan man bruke # Denne vil kun vise "hei" echo 'hei'; # echo 'på deg'; Lenke til kommentar
Garanti Skrevet 27. februar 2008 Forfatter Del Skrevet 27. februar 2008 Hei igjen! Jeg har to filer: data.php (side som tar imot og viser data fra brukeren(e)) process.php (side som behandler data og skriver de til en tekstfil) Problemet er at når jeg skriver inn informasjon i data.php og trykker på submit-knappen, sendes jeg til process.php. For å gjøre det litt enklere å komme tilbake til data.php har jeg lagt inn en link til den siden, men jeg skulle hatt en bedre måte å gjøre det på, f.eks. at jeg ble sendt direkte tilbake til data.php når den hadde oppdatert tekstfilen. Lenke til kommentar
j-- Skrevet 27. februar 2008 Del Skrevet 27. februar 2008 Du kan gjøre en av følgende: 1) inkludere process.php i data.php om noe skal prosesseres if(isset($_POST['navn_på_felt_fra_form'])){include 'process.php';} 2) bruke header("Location: data.php"); i process.php Lenke til kommentar
Garanti Skrevet 27. februar 2008 Forfatter Del Skrevet 27. februar 2008 Funket med alternativ 2, men ikke med alternativ 1. Skrev jeg det rett?: if(isset($_POST['news']['author']['header']['truncate'])){include 'process.php';} Lenke til kommentar
j-- Skrevet 27. februar 2008 Del Skrevet 27. februar 2008 Nei, det ble ikke riktig. if(isset($_POST['news'])){include 'process.php';} Du den gjør er å se om variabelen $_POST['news'] er satt, noe den er om den kommer fra HTML-skjemaet ditt. Den skal jo kun laste process.php om du har sendt data (med $_POST) til data.php Lenke til kommentar
Garanti Skrevet 27. februar 2008 Forfatter Del Skrevet 27. februar 2008 Aha, så for flere variabler må en skrive if(isset($_POST['var1'])){include 'process.php';} if(isset($_POST['var2'])){include 'process.php';} if(isset($_POST['var3'])){include 'process.php';} Takk! Lenke til kommentar
j-- Skrevet 27. februar 2008 Del Skrevet 27. februar 2008 Nei, den over vil inkludere process.php tre ganger, fordi den vil returnere TRUE på alle de if-sjekkene. Du kan kjøre flere sjekker i en if-setning, om du vil sjekke om alle variablene er satt. Eksempel: <?php if(isset($_POST['news']) && strlen($_POST['news'] > 20) && isset($_POST['author']) && $_POST['author'] == 'ditt brukernavn'){ #alt det over er TRUE #her kan du inkludere process.php }else{ #if-sjekken returnerte feil } ?> Lenke til kommentar
Garanti Skrevet 27. februar 2008 Forfatter Del Skrevet 27. februar 2008 (endret) Har nå begynt med mySQL, sliter med et script som tar imot og leser informasjonen fra tabell: Glem denne, jeg droppet dette scriptet uansett get.php <?PHP if(isset($_POST['ShowName']) && isset($_POST['Genre']) && isset($_POST['Seasons']) && isset($_POST['Episodes'])){ include("insertdata_table.php"); } else{ echo "Feil";} ?> <center> <p> <fieldset style=" width: 600px;"> <legend>add movie to database</legend> <form action="insertdata_table.php" method="post"> ShowName: <input type="text" size="10" maxlength="20" name="ShowName"> Genre: <input type="text" size="10" maxlength="20" name="Genre"> Seasons: <input type="text" size="10" maxlength="40" name="Seasons"> Episodes: <input type="text" size="10" maxlength="40" name="Episodes"> <p><input type="submit" value="Submit"></p> </form> </fieldset> </p> <p> <?PHP include("show.php"); ?> </p> </center> insertdata_table.php <?php include("get.php"); mysql_connect("localhost", "root", "sofa") or die(mysql_error()); mysql_select_db("televisionshowdatabase") or die(mysql_error()); $rawShowName = $_POST['ShowName']; $rawGenre = $_POST['Genre']; $rawSeasons = $_POST['Seasons']; $rawEpisodes = $_POST['Episodes']; $ShowName = htmlentities($rawShowName, ENT_NOQUOTES, "UTF-8"); $Genre = htmlentities($rawGenre, ENT_NOQUOTES, "UTF-8"); $Seasons = htmlentities($rawSeasons, ENT_NOQUOTES, "UTF-8"); $Episodes = htmlentities($rawEpisodes, ENT_NOQUOTES, "UTF-8"); mysql_query("INSERT INTO shows (ShowName, Genre, Seasons, Episodes) VALUES ('$ShowName', '$Genre', '$Seasons', '$Episodes') ") or die(mysql_error()); ?> show.php <?PHP mysql_connect("localhost", "root", "sofa") or die(mysql_error()); mysql_select_db("televisionshowdatabase") or die(mysql_error()); $query = "SELECT * FROM shows"; $result = mysql_query($query) or die(mysql_error()); $th = "</td><td>"; echo "<table border='5'>"; echo "<tr><th>ShowName</th><th>Genre</th><th>Seasons</th><th>Episodes</th></tr>"; while($row = mysql_fetch_array($result)){ echo "<tr><td>"; echo $row['ShowName'] . $th. $row['Genre'] . $th. $row['Seasons'] . $th . $row['Episodes']; } echo "<td /><tr /></table>"; ?> Vet at selve koden fungerer nogenlunde ok, men jeg får timeout i browseren når jeg la til if(isset($_POST['ShowName']) && isset($_POST['Genre']) && isset($_POST['Seasons']) && isset($_POST['Episodes'])){ include("insertdata_table.php"); } else{ echo "Feil";} i stedet for bare [include("insertdata_table.php");] i begynnelsen av get.php. Hvordan fikser jeg dette? Endret 28. februar 2008 av Garanti Lenke til kommentar
Garanti Skrevet 28. februar 2008 Forfatter Del Skrevet 28. februar 2008 Noen som vet hvordan man kan søker gjennom en mySQL-table? Ved oppretting av en bruker skal jeg sjekke om brukernavnet allerede ikke er tatt, returnere tekst dersom den eksisterer, eller skrive brukeren inn i tablen dersom brukernavnet ikke eksisterer. Prøvde meg fram med denne originalkoden <? $query = "SELECT * FROM table WHERE somefield like '%$userInput%'"; $result = mysql_query($query); $num_rows = mysql_num_rows($result); if($num_rows == 0) { echo "No results<BR>n"; } else { while($row = mysql_fetch_array($result)) { echo "{$row['somefield']}<BR>n"; } } ?> Mitt forsøk: $result = mysql_query("SELECT * FROM users WHERE UserName like '$UserName'"); $num_rows = mysql_num_rows($result); if($num_rows == 0) { mysql_query("INSERT INTO users (UserName, PassWord) VALUES('$UserName', '$PassWord') ") or die(mysql_error()); } else { while($row = mysql_fetch_array($result)) { echo "Username is taken."; } } Lenke til kommentar
Wackamole Skrevet 28. februar 2008 Del Skrevet 28. februar 2008 Får du noen feilmelding når du prøver koden?, kan ikke se noe galt, uten om hva du egentlig skal med denne linjen while($row = mysql_fetch_array($result)) { Du henter jo ikke info fra den Lenke til kommentar
Garanti Skrevet 28. februar 2008 Forfatter Del Skrevet 28. februar 2008 (endret) Fikk hjelp på irc-kanalen irc.enterthegame.com#php, men ble bannet fordi jeg postet for mye kode Uansett, nå sjekker scriptet om brukernavnet finnes. Problemet nå er at passord og brukernavn ikke blir lagret i tabellen i databasen, alt jeg får er whitespace: :S Fra phpMyAdmin <?php // Make a MySQL Connection mysql_connect("localhost", "test", "test1") or die(mysql_error()); mysql_select_db("cee") or die(mysql_error()); $rawUserName = $_POST['UserName']; $rawPassWord = $_POST['PassWord']; $rawUserName = htmlentities($UserName, ENT_NOQUOTES, "UTF-8"); $rawPassWord = htmlentities($PassWord, ENT_NOQUOTES,"UTF-8"); $result = mysql_query("SELECT * FROM users WHERE UserName='$UserName'"); if (!$result) { echo "Username is takin"; } else { mysql_query("INSERT INTO users (UserName, PassWord) VALUES('$UserName', '$PassWord') ") or die(mysql_error()); } ?> Endret 29. februar 2008 av Garanti Lenke til kommentar
Gjest Slettet+142 Skrevet 29. februar 2008 Del Skrevet 29. februar 2008 Ville heller skrevet if( mysql_num_rows($result) > 0 ) istedenfor if(!$result). Lenke til kommentar
Garanti Skrevet 29. februar 2008 Forfatter Del Skrevet 29. februar 2008 (endret) Vel, i denne databasen hverken vil eller bør det være to brukere med samme navn EDIT: Nå får jeg endelig opprettet nye brukere, ved å ta bort funksjonen som sjekker om brukernavnet finnes i databasen fra før, og funksjonen som tar bort html-kode. EDIT2: Da var alt ordnet Endret 29. februar 2008 av Garanti Lenke til kommentar
Garanti Skrevet 29. februar 2008 Forfatter Del Skrevet 29. februar 2008 (endret) Hmm, har problemer med preg_match, skulle gjerne inkludert æ, ø og å: $UserName = mysql_escape_string($_POST['UserName']); $PassWord = mysql_escape_string($_POST['PassWord']); if (!preg_match('#^[a-z0-9_oa]{1,12}$#iu', $UserName)) { exit; echo "Username contained unsupported characters"; } else { $result = mysql_query("SELECT * FROM `users` WHERE `UserName`='".$UserName."'",$link); if (mysql_num_rows($result) > 0) { echo "Username is in use, choose another"; } else { mysql_query("INSERT INTO `users` (`UserName`, `PassWord`) VALUES ('".$UserName."', '".$PassWord."')", $link); echo 'User created!'; }} Endret 29. februar 2008 av Garanti Lenke til kommentar
alec1 Skrevet 1. mars 2008 Del Skrevet 1. mars 2008 preg_match støtter vel æ,ø,å såvidt jeg husker. // prøv dette if (!preg_match('#^[a-å+0-9_oa]{1,12}$#iu', $UserName)) // eventuelt dette if (!preg_match("/^[a-å+0-9]*$/i", $UserName)) Lenke til kommentar
Garanti Skrevet 1. mars 2008 Forfatter Del Skrevet 1. mars 2008 (endret) Jeg er sikker på at det støtter æ, ø og å, men jeg får det ikke til. <?php $link = mysql_connect("localhost:3306", "test", "test1") or die(mysql_error()); mysql_select_db("cee",$link) or die(mysql_error()); $UserName = mysql_escape_string($_POST['UserName']); $PassWord = mysql_escape_string($_POST['PassWord']); if (preg_match("/^[a-zæøå0-9 ]+$/i", $UserName)) { /* Legg til æøå og " "! */ $result = mysql_query("SELECT * FROM `users` WHERE `UserName`='".$UserName."'",$link); if (mysql_num_rows($result) > 0) { echo "Username is taken, choose another"; } else { mysql_query("INSERT INTO `users` (`UserName`, `PassWord`) VALUES ('".$UserName."', '".$PassWord."')", $link); echo 'User created!'; } } else { echo "Username contained unsupported characters"; exit; } ?> Dersom noen kunne forklart meg hvordan man setter opp preg_match hadde jeg blitt veldig glad! Dokumentasjonen hos php.net er for vanskelig og for lang, og de eksempelene jeg finner f.eks. her, funker ikke. Endret 31. august 2008 av Garanti Lenke til kommentar
alec1 Skrevet 1. mars 2008 Del Skrevet 1. mars 2008 Du kan ikke ha [a-zæøå0-9] men [a-å+0-9] Lenke til kommentar
Garanti Skrevet 1. mars 2008 Forfatter Del Skrevet 1. mars 2008 (endret) Fikk endelig fikset det, har holdt i hele dag for å få det til if (preg_match('/^[a-zæøåØÆÅ0-9 ]{8,30}+$/iu', $UserName) && preg_match('/^[a-zæøåØÆÅ0-9 ]{8,30}+$/iu', $PassWord)){ $result = mysql_query("SELECT * FROM `users` WHERE `UserName`='".$UserName."'",$link); if (mysql_num_rows($result) > 0) { echo "Username is taken, choose another"; } else { mysql_query("INSERT INTO `users` (`UserName`, `PassWord`) VALUES ('".$UserName."', '".$PassWord."')", $link); echo 'User created!'; } } else{ echo "Username and/or password contained unsupported characters, and/or it's too long or too short. Please try again."; } Nå er problemet mitt at dersom brukerene som blir opprettet har brukernavn eller passord som inneholder æøå, blir det seende slik ut: Hva skal jeg gjøre? Endret 31. august 2008 av Garanti Lenke til kommentar
Flin Skrevet 1. mars 2008 Del Skrevet 1. mars 2008 (endret) Så lenge du har med "echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';" i dokumentene dine så burde det ikke være noe stress. Det du ser i phpadmin kommer av at phpadmin ikke er kompatibel med utf-8, men det går bra når du henter det ut. EDIT : Et bra tips, bruk md5 på passordene dine. Sikkerhet. Endret 1. mars 2008 av Hjelpphp Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå