Jump to content

sergioas

Members
  • Content count

    22
  • Joined

  • Last visited

Community Reputation

0 Comum

About sergioas

  1. sergioas

    JWT (Json Web Tokens) + PHP Slim + Retrofit (Android)

    Alaerte, - preciso saber instalar no Slim - saber como gerar e em que momento gerar o token - e se preciso autenticar sempre que o usuario enviar uma requisicao achei este tutorial aqui: http://www.appelsiini.net/projects/slim-jwt-auth ja tenho essa estrutura de function...
  2. Bom dia, Estou implementando um app que usa comunicacao com webServer (REST): PHP Slim + Retrofit. Agora preciso , para seguranca, implementacao autenticacao da requisicao utilizando JWT (Jjson Web Tokens). Me indicam algum tutorial para esta integraçao ?
  3. Bom Dia, Estou iniciando em android e fazendo um app basico de localizacao em tempo real do usuario. Criei uma activity basica de map, e fiz a codificacao para utilizar o gps e ir atualizando conforme o usuario se movimenta, e mostrando a localizacao no mapa de ruas. Quando simulo no meu celular o app roda e mostra o mapa, mas vejo que NAO ATIVA O GPS, quando o app abre, e consequentemente nao mostra a localizacao do usuario. Deve estar acontecendo algo com a permissao em tempo real, que eu nao sei como fazer. Pelo Log que coloquei ele entra no if da permissao. Se alguem conseguir me ajudar... Segue minha activity e meu Manifest. Activity: public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LocationListener { private GoogleMap mMap; private Marker marcador; double lat = 0.0; double lng = 0.0; private int precisaoMinimaExigida = 2000; // Precisão do serviço de localização em metros. private int intervaloTempoLeituraGPS = 5000; // De quanto em quanto tempo (milissegundos) avisará que mudou de posição. private int distanciaLeituraGPS = 0; // De quantos em quantos metros avisará que mudou a posição. private int intervaloTempoREDE = 5000; // De quanto em quanto tempo (milissegundos) avisará que mudou de posição. private int distanciaREDE = 0; // De quantos em quantos metros avisará que mudou posição. // Define os elementos visuais para exposição das informações no dispositivo. // private EditText editTextPosicoes; // private ScrollView scroller; // Define o gerenciador de localização. private LocationManager locationManager; // Filtro para definir o evento de broadcast que o app aguardará. // No caso "android.location.LocationManager.PROVIDERS_CHANGED_ACTION". private IntentFilter filter; // Caixa de diálogo para interação com o usuário. private AlertDialog alert; // Variáveis de controle dos provedores de localização habilitados na configuração do Android. private Boolean provedorGPS_Habilitado; private Boolean provedorREDE_Habilitado; // Cria um Broadcast Receiver para que a MainActivity seja avisada caso o usuário mude as configurações de localização por fora do app // (deslizando a tela para baixo e clicando no ícone do GPS, por exemplo). // Isso é necessário porque durante a execução, o usuário tem como mudar as configurações de localização sem usar o próprio aplicativo. BroadcastReceiver bReceiver = new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent arg1) { // Chama o método que localiza o usuário. localizarUsuario(); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); // Obtain the SupportMapFragment and get notified when the map is ready to be used. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); /////// // Registra o receiver para que o app seja avisado quando o usuário modificar as configurações de localização do dispositivo. filter = new IntentFilter(android.location.LocationManager.PROVIDERS_CHANGED_ACTION); this.registerReceiver(bReceiver, filter); localizarUsuario(); } public void localizarUsuario() { // Este método efetivamente realiza a localização do usuário, configurando um "locationManager". // Através do locationManager o dispositivo utiliza ou o GPS ou a REDE para descobrir a localização // do usuário. Note que, na configuração do aparelho, podem estar habilitados ambos os métodos, // algum deles, ou nenhum. Para cada caso, uma mensagem de alerta deverá ser mostrada, // questionando o usuário se deseja ligar as ferramentas de localização. try { // Obtém o locationManager. locationManager = (LocationManager) getSystemService(getApplicationContext().LOCATION_SERVICE); // Há provedores de localização diversos. // O GPS_PROVIDER usa o hardware de GPS dispositivo para obter localização via satélite. // O NETWORK_PROVIDER obterá a localização a partir da triangulação de antenas da rede de telefonia celular. // Verifica se os provedores de localização estão habilitados. provedorREDE_Habilitado = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); provedorGPS_Habilitado = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); // Caso não haja nenhum provedor de localização habilitado... if (!provedorREDE_Habilitado && !provedorGPS_Habilitado) { Log.i("PROVEDORES","NAO ESTAO HABILITADOS"); // Não há provedores de localização habilitados. // Perguntar ao usuário se deseja habilitar. // Monta a caixa de diálogo. AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); alertDialogBuilder .setMessage("O serviço de localização está desabilitado. Deseja mudar a configuração?") .setCancelable(false) .setPositiveButton("Configurar", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { abreConfiguracaoDoDispositivo(); } }); alertDialogBuilder.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); // editTextPosicoes.setText("Selecione uma forma de obter a localização\npelo menu Configurar."); } }); alert = alertDialogBuilder.create(); // Mostra a caixa de diálogo. if (!alert.isShowing()) { alert.show(); } } else { Log.i("PROVEDORES"," ESTAO HABILITADOS"); // Se serviço de localização já foi configurado... if (provedorGPS_Habilitado) { configuraProvedorGPS(); Log.i("CONFIGURANDO GPS","CONFIGURANDO GPS"); } else { // Caso apenas o serviço de localização por REDE esteja habilitado, sugere o GPS. // Monta a caixa de diálogo. AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); alertDialogBuilder .setMessage("Gostaria de habilitar o GPS para uma precisão maior?") .setCancelable(false) .setPositiveButton("Sim", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { abreConfiguracaoDoDispositivo(); } }); alertDialogBuilder.setNegativeButton("Não", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); configuraProvedorREDE(); } }); alert = alertDialogBuilder.create(); // Mostra a caixa de diálogo. if (!alert.isShowing()) { alert.show(); } } } } catch (Exception e) { Log.i("gps", e.getMessage() + " " + e.getLocalizedMessage()); } } public void abreConfiguracaoDoDispositivo() { // Este método abre a tela de congifuração de localização do dispositivo. Intent callGPSSettingIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); (this).startActivity(callGPSSettingIntent); } public void configuraProvedorGPS() { // minTimeGPS é de quanto em quanto tempo (em milissegundos), a informação da localização será atualizada via GPS. // minDistanceGPS é de quantos em quantos metros a informação da localização será atualizada via GPS. long minTimeGPS = intervaloTempoLeituraGPS; long minDistanceGPS = distanciaLeituraGPS; locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTimeGPS, minDistanceGPS, this); Log.i("GPS CONFIGURADOOOO","GPS CONFIGURADOOOO"); // Configura o locationManager para chamar o método OnLocationChanged() de acordo com as premissas estabelecidas. if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { Log.i("SEM PERMISSAO","SEM PERMISSAO"); return; } } public void configuraProvedorREDE() { // minTimeNETWORK é de quanto em quanto tempo (em milissegundos), a informação da localização será atualizada via triangulação de antenas. // minDistanceNETWORK é de quantos em quantos metros a informação da localização será atualizada via via triangulação de antenas. long minTimeNETWORK = intervaloTempoREDE; long minDistanceNETWORK = distanciaREDE; // Configura o locationManager para chamar o método OnLocationChanged() de acordo com as premissas estabelecidas. if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, minTimeNETWORK, minDistanceNETWORK, this); } /** * Manipulates the map once available. * This callback is triggered when the map is ready to be used. * This is where we can add markers or lines, add listeners or move the camera. In this case, * we just add a marker near Sydney, Australia. * If Google Play services is not installed on the device, the user will be prompted to install * it inside the SupportMapFragment. This method will only be triggered once the user has * installed Google Play services and returned to the app. */ @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; } private void agregarMarcador(double lat, double lng) { LatLng coordenadas = new LatLng(lat, lng); CameraUpdate miUbicacion = CameraUpdateFactory.newLatLngZoom(coordenadas, 16); if (marcador != null) marcador.remove(); marcador = mMap.addMarker(new MarkerOptions() .position(coordenadas) .title("Minha Posicao atual") .icon(BitmapDescriptorFactory.fromResource(android.R.mipmap.sym_def_app_icon))); mMap.animateCamera(miUbicacion); } private void actualizarUbicacion(Location location) { if (location != null) { lat = location.getLatitude(); lng = location.getLongitude(); agregarMarcador(lat, lng); } } @Override public void onLocationChanged(Location location) { // Este método será chamado toda vez que houver uma atualização da localização do usuário. // A atualização da localização ocorre de acordo com o configurado no locationManager. try { // Obtém a informação da precisão da localização, em metros. float precisao=location.getAccuracy(); // Se a precisão for menor ou igual à precisão mínima exigida (em metros), então mostra a localização na tela. // A precisão mínima exigida depende da aplicação. if (precisao <= precisaoMinimaExigida) { actualizarUbicacion(location); } } catch (Exception e) { } } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override protected void onDestroy() { super.onDestroy(); // Desregistra o Broadcast Receiver. unregisterReceiver(bReceiver); } } ============================ Manifest: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="goodeal.localizacaousuarios2"> <!-- The ACCESS_COARSE/FINE_LOCATION permissions are not required to use Google Maps Android API v2, but you must specify either coarse or fine location permissions for the 'MyLocation' functionality. --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.LOCATION_HARDWARE" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <!-- The API key for Google Maps-based APIs is defined as a string resource. (See the file "res/values/google_maps_api.xml"). Note that the API key is linked to the encryption key used to sign the APK. You need a different API key for each encryption key, including the release key that is used to sign the APK for publishing. You can define the keys for the debug and release targets in src/debug/ and src/release/. --> <meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/google_maps_key" /> <activity android:name=".MapsActivity" android:label="@string/title_activity_maps"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
  4. Pessoal, peço ajuda. Estou iniciando em android... e fazendo um app basico, iniciando pelo cadastro de usuario...mas nao cria a tabela "usuario" e nem grava no banco... Segue as classes: public class DBHelper extends SQLiteOpenHelper { private static String DB_NAME = "goodeal_c2c"; private static int DB_VERSION = 1; private static String TABLE_USUARIO = "CREATE TABLE usuario( _id integer primary key autoincrement," + "nome text"+")"; public DBHelper(Context context){ super(context,DB_NAME,null,DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(TABLE_USUARIO); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String sql = "DROP TABLE usuario"; db.execSQL(sql); } } ==== public class DBUsuarioManager { private static DBHelper dbHelper = null; public DBUsuarioManager(Context context) { dbHelper = new DBHelper(context); } public void addUsuario(UsuarioTO usuarioTO){ ContentValues contentValues = new ContentValues(); contentValues.put("nome",usuarioTO.getNome()); SQLiteDatabase db = dbHelper.getWritableDatabase(); db.insert("usuario",null,contentValues); db.close(); } public ArrayList<UsuarioTO> selecionaUsuarios(){ SQLiteDatabase db = dbHelper.getReadableDatabase(); String sql = "SELECT * FROM usuario"; Cursor cursor = db.rawQuery(sql,null); ArrayList<UsuarioTO> usuarios = null; UsuarioTO usuarioTO = null; if(cursor != null && cursor.moveToFirst()){ usuarios = new ArrayList<UsuarioTO>(); usuarioTO = new UsuarioTO(); do{ usuarioTO.set_id(Integer.valueOf(cursor.getInt(0))); usuarioTO.setNome(cursor.getString(1)); usuarios.add(usuarioTO); }while (cursor.moveToNext()); } return usuarios; } public UsuarioTO selecionaUsuario(Integer _id){ SQLiteDatabase db = dbHelper.getReadableDatabase(); String sql = "SELECT * FROM usuarios WHERE _id = "+_id; Cursor cursor = db.rawQuery(sql,null); UsuarioTO usuarioTO = null; if(cursor != null && cursor.moveToFirst()){ usuarioTO = new UsuarioTO(); do{ usuarioTO.set_id(Integer.valueOf(cursor.getString(0))); usuarioTO.setNome(cursor.getString(1)); }while (cursor.moveToNext()); } return usuarioTO; } } ==== public class ActivityCadastrar extends AppCompatActivity { private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; private static final Pattern pattern = Pattern.compile(EMAIL_PATTERN, Pattern.CASE_INSENSITIVE); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.cadastrar); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Id correspondente ao botão Up/Home da actionbar case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; } return super.onOptionsItemSelected(item); } public void btnAvancar1(View view){ boolean validados = true; EditText primeiroNome = (EditText)findViewById(R.id.txtPrimeiroNome); String pNome = primeiroNome.getText().toString(); if(pNome == null || pNome.equals("") || pNome.replace("\\D","").equals("") || pNome.trim().length() <= 2){ validados = false; primeiroNome.setError("Obrigatório"); } if(validados){ //gravar no banco UsuarioTO usuarioTO = new UsuarioTO(); usuarioTO.setNome(pNome); DBUsuarioManager dbUsuarioManager = new DBUsuarioManager(this); dbUsuarioManager.addUsuario(usuarioTO); Intent pgtoReceb = new Intent(this,ActivityRecebimentoPagamento.class); startActivity(pgtoReceb); } } public static boolean validarEmail(String email){ Matcher matcher = pattern.matcher(email); return matcher.matches(); } } ========================= Peço ajuda...obrigado.
  5. Pessoal, estou usando o Jade para fazer um layout padrão, pois varias telas do meu site irão utilizar um mesmo layout (menu). Peguei um layout gratuito: http://startbootstrap.com/template-categories/admin-dashboard/ E estou montando uma estrutura de "includes", separando por: - dashboard - que vai juntar tudo (head, menus , corpo e scripts) - head - cabecalho e css - menus - menu padrao para as paginas - corpo - que vai ser as paginas de acordo com o menu escolhido - scripts - javascripts Mas, quando exibe a pagina, exibe com os Menus ja expandidos (abertos), e nao sei como fazer para deixar os menus fechados. Segue os arquivos: -- dashboard.jade doctype html html(lang='en') include head body include menu_ // /#page-wrapper // /#wrapper include scripts -- head.jade block head head meta(charset='utf-8') meta(http-equiv='X-UA-Compatible', content='IE=edge') meta(name='viewport', content='width=device-width, initial-scale=1') meta(name='description', content='') meta(name='author', content='') title Cuidamos // Bootstrap Core CSS link(href='../../stylesheets/bootstrap/bootstrap.min.css', rel='stylesheet') // MetisMenu CSS link(href='../../stylesheets/metisMenu/metisMenu.min.css', rel='stylesheet') // Timeline CSS link(href='../../stylesheets/dist/timeline.css', rel='stylesheet') // Custom CSS link(href='../../stylesheets/dist/sb-admin-2.css', rel='stylesheet') // Morris Charts CSS link(href='../../stylesheets/morrisjs/morris.css', rel='stylesheet') // Custom Fonts link(href='../../stylesheets/font-awesome/font-awesome.min.css', rel='stylesheet') link(href='../../stylesheets/style.css', rel='stylesheet') -- menu_.jade block menu nav.navbar.navbar-default.navbar-static-top(role='navigation', style='margin-bottom: 0') // INICIO CONTEM HEADER + MENU .navbar-header // INICIO SB ADMIN 2 button.navbar-toggle(type='button', data-toggle='collapse', data-target='.navbar-collapse') span.sr-only Toggle navigation span.icon-bar span.icon-bar span.icon-bar a.navbar-brand(href='index.html') Dash // FIM SB ADMIN 2 // /.navbar-header ul.nav.navbar-top-links.navbar-right // INICIO ICONES CANTO SUPERIOR DIREITO li.dropdown a.dropdown-toggle(data-toggle='dropdown', href='#') i.fa.fa-envelope.fa-fw i.fa.fa-caret-down ul.dropdown-menu.dropdown-messages li a(href='#') div strong John Smith span.pull-right.text-muted em Yesterday div | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eleifend... li.divider li a(href='#') div strong John Smith span.pull-right.text-muted em Yesterday div | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eleifend... li.divider li a(href='#') div strong John Smith span.pull-right.text-muted em Yesterday div | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eleifend... li.divider li a.text-center(href='#') strong Read All Messages i.fa.fa-angle-right // /.dropdown-messages // /.dropdown li.dropdown a.dropdown-toggle(data-toggle='dropdown', href='#') i.fa.fa-tasks.fa-fw i.fa.fa-caret-down ul.dropdown-menu.dropdown-tasks li a(href='#') div p strong Task 1 span.pull-right.text-muted 40% Complete .progress.progress-striped.active .progress-bar.progress-bar-success(role='progressbar', aria-valuenow='40', aria-valuemin='0', aria-valuemax='100', style='width: 40%') span.sr-only 40% Complete (success) li.divider li a(href='#') div p strong Task 2 span.pull-right.text-muted 20% Complete .progress.progress-striped.active .progress-bar.progress-bar-info(role='progressbar', aria-valuenow='20', aria-valuemin='0', aria-valuemax='100', style='width: 20%') span.sr-only 20% Complete li.divider li a(href='#') div p strong Task 3 span.pull-right.text-muted 60% Complete .progress.progress-striped.active .progress-bar.progress-bar-warning(role='progressbar', aria-valuenow='60', aria-valuemin='0', aria-valuemax='100', style='width: 60%') span.sr-only 60% Complete (warning) li.divider li a(href='#') div p strong Task 4 span.pull-right.text-muted 80% Complete .progress.progress-striped.active .progress-bar.progress-bar-danger(role='progressbar', aria-valuenow='80', aria-valuemin='0', aria-valuemax='100', style='width: 80%') span.sr-only 80% Complete (danger) li.divider li a.text-center(href='#') strong See All Tasks i.fa.fa-angle-right // /.dropdown-tasks // /.dropdown li.dropdown a.dropdown-toggle(data-toggle='dropdown', href='#') i.fa.fa-bell.fa-fw i.fa.fa-caret-down ul.dropdown-menu.dropdown-alerts li a(href='#') div i.fa.fa-comment.fa-fw | New Comment span.pull-right.text-muted.small 4 minutes ago li.divider li a(href='#') div i.fa.fa-twitter.fa-fw | 3 New Followers span.pull-right.text-muted.small 12 minutes ago li.divider li a(href='#') div i.fa.fa-envelope.fa-fw | Message Sent span.pull-right.text-muted.small 4 minutes ago li.divider li a(href='#') div i.fa.fa-tasks.fa-fw | New Task span.pull-right.text-muted.small 4 minutes ago li.divider li a(href='#') div i.fa.fa-upload.fa-fw | Server Rebooted span.pull-right.text-muted.small 4 minutes ago li.divider li a.text-center(href='#') strong See All Alerts i.fa.fa-angle-right // /.dropdown-alerts // /.dropdown li.dropdown a.dropdown-toggle(data-toggle='dropdown', href='#') i.fa.fa-user.fa-fw i.fa.fa-caret-down ul.dropdown-menu.dropdown-user li a(href='cadastroPacientes.html') i.fa.fa-user.fa-fw | Meu Cadastro li a(href='#') i.fa.fa-gear.fa-fw | Settings li.divider li a(href='login.html') i.fa.fa-sign-out.fa-fw | Logout // /.dropdown-user // /.dropdown // FIM ICONES CANTO SUPERIOR DIREITO // /.navbar-top-links .navbar-default.sidebar(role='navigation') // INICIO DO MENU .sidebar-nav.navbar-collapse ul#side-menu.nav li.sidebar-search .input-group.custom-search-form input.form-control(type='text', placeholder='Search...') span.input-group-btn button.btn.btn-default(type='button') i.fa.fa-search // /input-group li a(href='index.html') i.fa.fa-dashboard.fa-fw | Dashboard li a(href='#') i.fa.fa-bar-chart-o.fa-fw | Charts span.fa.arrow ul.nav.nav-second-level li a(href='#') Flot Charts li a(href='#') Morris.js Charts // /.nav-second-level li a(href='tables.html') i.fa.fa-table.fa-fw | Tables li a(href='forms.html') i.fa.fa-edit.fa-fw | Forms li a(href='#') i.fa.fa-wrench.fa-fw | UI Elements span.fa.arrow ul.nav.nav-second-level li a(href='panels-wells.html') Panels and Wells li a(href='buttons.html') Buttons li a(href='notifications.html') Notifications li a(href='typography.html') Typography li a(href='icons.html') Icons li a(href='grid.html') Grid // /.nav-second-level li a(href='#') i.fa.fa-sitemap.fa-fw | Multi-Level Dropdown span.fa.arrow ul.nav.nav-second-level li a(href='#') Second Level Item li a(href='#') Second Level Item li a(href='#') | Third Level span.fa.arrow ul.nav.nav-third-level li a(href='#') Third Level Item li a(href='#') Third Level Item li a(href='#') Third Level Item li a(href='#') Third Level Item // /.nav-third-level // /.nav-second-level li a(href='#') i.fa.fa-files-o.fa-fw | Sample Pages span.fa.arrow ul.nav.nav-second-level li a(href='blank.html') Blank Page li a(href='login.html') Login Page // /.nav-second-level // /.sidebar-collapse // FIM DO MENU // /.navbar-static-side // FIM CONTEM HEADER + MENU include corpo -- corpo.jade #page-wrapper // INICIO CONTEM CORPO DA PAGINA .col-lg-12 h1.page-header Cadastro header.row .row .form-group .col-md-8(role='main') form(role='form') .row .form-group .jumbotron .container h1 Bem Vindo ! p .row .col-xs-4.col-sm-4.col-md-4 .form-group input#cpfPaciente.form-control.input-xs(name='cpfPaciente', placeholder='cpf (999.999.999-99)', required='', tabindex='1', type='text', value='') .col-xs-4.col-sm-4.col-md-4 .form-group input#dataNascimentoPaciente.form-control.input-xs(name='dataNascimentoPaciente', required='', type='text', placeholder='Data Nascimento (99/99/9999)', value='') .col-xs-4.col-sm-4.col-md-4 .form-group select.form-control.input-xs option option(value='', selected='') Sexo option(value='F') Feminino option(value='M') Masculino .row .col-xs-6.col-sm-6.col-md-6 .form-group input#first_name.form-control.input-xs(type='text', name='first_name', placeholder='Nome') .col-xs-6.col-sm-6.col-md-6 .form-group input#last_name.form-control.input-xs(type='text', name='last_name', placeholder='Sobrenome') .row .col-xs-6.col-sm-6.col-md-6 .form-group input#email.form-control.input-xs(type='email', name='email', placeholder='Email') .col-xs-6.col-sm-6.col-md-6 .form-group input#confirmeEmail.form-control.input-xs(type='email', name='confirmeEmail', placeholder='Confirme Email') .row .col-xs-4.col-sm-4.col-md-4 .form-group input#senha.form-control.input-xs(type='password', name='senha', placeholder='Senha') .col-xs-4.col-sm-4.col-md-4 .form-group input#confirmeSenha.form-control.input-xs(type='password', name='confirmeSenha', placeholder='Confirme Senha') .row .col-xs-4.col-sm-4.col-md-4 .form-group label Endereço: .row .col-xs-4.col-sm-4.col-md-4 .form-group input#cepPaciente.form-control.input-xs(name='cepPaciente', required='', type='text', placeholder='Cep (99999-999)', value='') .row .col-xs-6.col-sm-6.col-md-6 .form-group input#ruaPaciente.form-control.input-xs(name='ruaPaciente', required='', type='text', placeholder='Rua', value='') .col-xs-2.col-sm-2.col-md-2 .form-group input#numeroRuaPaciente.form-control.input-xs(name='numeroRuaPaciente', required='', type='text', placeholder='Numero', value='') .col-xs-4.col-sm-4.col-md-4 .form-group input#complementoRuaPaciente.form-control.input-xs(name='complementoRuaPaciente', required='', type='text', placeholder='Complemento', value='') .row .col-xs-4.col-sm-4.col-md-4 .form-group select#estado.form-control.m-bot15(name='estado') option(value='') Selecione Estado option(value='1') AC-ACRE option(value='2') AL-ALAGOAS option(value='3') AP-AMAPÁ option(value='4') AM-AMAZONAS option(value='5') BA-BAHIA option(value='6') CE-CEARÁ option(value='7') DF-DISTRITO FEDERAL option(value='8') ES-ESPÍRITO SANTO option(value='9') RR-RORAIMA option(value='10') GO-GOIÁS option(value='11') MA-MARANHÃO option(value='12') MT-MATO GROSSO option(value='13') MS-MATO GROSSO DO SUL option(value='14') MG-MINAS GERAIS option(value='15') PA-PARÁ option(value='16') PB-PARAÍBA option(value='17') PR-PARANÁ option(value='18') PE-PERNAMBUCO option(value='19') PI-PIAUÍ option(value='20') RJ-RIO DE JANEIRO option(value='21') RN-RIO GRANDE DO NORTE option(value='22') RS-RIO GRANDE DO SUL option(value='23') RO-RONDÔNIA option(value='24') TO-TOCANTINS option(value='25') SC-SANTA CATARINA option(value='26') SP-SÃO PAULO option(value='27') SE-SERGIPE .col-xs-4.col-sm-4.col-md-4 .form-group input#cidade.form-control.input-xs(name='cidade', required='', type='text', placeholder='Cidade', value='') .col-xs-4.col-sm-4.col-md-4 .form-group input#bairro.form-control.input-xs(name='bairro', required='', type='text', placeholder='Bairro', value='') .row .col-xs-4.col-sm-4.col-md-4 .form-group input#telefoneFixoPaciente.form-control.input-xs(name='telefoneFixoPaciente', required='', type='text', placeholder='Telefone (99-9999-9999)', value='') .col-xs-4.col-sm-4.col-md-4 .form-group input#celularPaciente.form-control.input-xs(name='celularPaciente', required='', type='text', placeholder='Celular (99-99999-9999)', value='') .row .col-xs-4.col-sm-4.col-md-4 .form-group label Se possuir Convênio Médico: .row .col-xs-4.col-sm-4.col-md-4 .form-group select#convenio.form-control.m-bot15(name='convenio') option(value='') Selecione Convenio Medico option(value='1') AC-ACRE .col-xs-4.col-sm-4.col-md-4 .form-group input#planoConvenioMedico.form-control.input-xs(name='planoConvenioMedico', required='', type='text', placeholder='Plano Convenio Medico', value='') .col-xs-4.col-sm-4.col-md-4 .form-group input#numeroCarteirinhaConvenio.form-control.input-xs(name='numeroCarteirinhaConvenio', required='', type='text', placeholder='Numero Completo Carteirinha', value='') .row .col-xs-4.col-sm-4.col-md-4 .form-group label Se Menor de Idade, Informar um Responsável: .row .col-xs-4.col-sm-4.col-md-4 .form-group input#nomeResponsavel.form-control(type='text', name='nomeResponsavel', value='Nome do Responsavel') .col-xs-4.col-sm-4.col-md-4 .form-group input#cpfResponsavel.form-control(type='text', name='cpfResponsavel', value='CPF do Responsavel') .col-xs-4.col-sm-4.col-md-4 .form-group input#telefoneResponsavel.form-control(name='telefoneResponsavel', type='text', value='Tel Responsavel') .row .col-xs-4.col-sm-4.col-md-4 .form-group .col-xs-4.col-sm-4.col-md-4 .form-group(style='text-align:center') input.btn.btn-success.btn-lg(type='submit', value='Cadastrar') aside.col-md-4(role='complementary') footer.row // FIM CONTEM CORPO DA PAGINA Se alguem conseguir me dar uma luz para resolver isso...
  6. Pessoal, o que é aconselhavel / melhor para desenvolver um site, tendo como um dos Objetivos utilizar bastante as tecnicas de SEO e bom posicionamento no Google, o java com seus frameworks como Struts, JSF, etc... ou PHP com seus frameworks como Cacke, Zend, etc... ?
  7. sergioas

    Problemas em move_uploaded_file()

    Evandro Oliveira: Fiz sem o jquery/ajax, e estava funcionando.... mas ai quando tentei com o ajax, nao funfou mais.... NerdMonkey: Realmente nao vai, o .php nao recebe arquivos... Pesquisei, e vi este topico aqui mesmo no Forum: http://forum.imasters.com.br/topic/391531-resolvidojquery-enviar-files-via-ajax/ Entao, acredito que ajax nao envia arquivos... Vou ter que fazer via Form - action..e dando tudo OK, direciono via php mesmo para a mesma pagina....
  8. sergioas

    Problemas em move_uploaded_file()

    Ok, fiz isto, e em "dados" , nao foi serializado "arq" . Na verdade, eu quero fazer via ajax, para se der tudo ok, retornar um dialog informando que foi tudo OK, se nao der certo , mostrar um dialog informando que nao deu certo o Upload... Se eu fizer via Form action, nao vai ter como eu retornar...
  9. sergioas

    Problemas em move_uploaded_file()

    show, deu certo era isso mesmo. Obrigado. Mas agora eu mudei para fazer Post por Ajax/Jquery... E nao sei como receber no meu recebArq.php o arquivo. Estou fazendo dessa maneira o ajax: var dados = $( form ).serialize(); $.ajax({ type: "POST", url: "/projeto/adminPaciente/recebArq.php", data: dados, success: function( data ) { alert( 'GRavou o arquivo' ); },error: function(XMLHttpRequest, textStatus, errorThrown) { for(i in XMLHttpRequest) { if(i!="channel") document.write(i +" : " + XMLHttpRequest +"<br>") } } }); Ele exibe o alert 'Gravou o arquivo', mas na verdade nao fez nada... e nem deu erro...
  10. sergioas

    Problemas em move_uploaded_file()

    Boa Tarde, estou comproblemas em Post de arquivo. Segue: Tenho o html: <form id="formularioCadastroPaciente" enctype="multipart/form-data" action="recebeArq.php" method="post"> <input type="file" id="arq" name="arq" class="filestyle" data-iconName="glyphicon glyphicon-inbox"> php - recebArq.php $caminho = '/temp/arq'; $moveu = move_uploaded_file($_FILES['arq'],$caminho.$_FILES['arq']['name']); if($moveu){ echo 'OK'; } else{ echo 'NAO OK'; } O erro: Warning: move_uploaded_file() expects parameter 1 to be string, array given in C:\xampp\htdocs\projeto\admin\recebeArq.php on line 62 NAO OK Nao estou utilizando corretamente move_uploaded_file ?
  11. sergioas

    Erro sintax em UPDATE ?

    Ok, era isso mesmo, mais uma vez, Obrigado.
  12. sergioas

    Erro sintax em UPDATE ?

    Bom dia, tenho o seguinte erro: Ocorreu um erro ao tentar executar esta ação, foi gerado um LOG , tente novamente mais tarde.exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE 'idPaciente'='1'' at line 12' Ao tentar executar este UPDATE: $qUpdate = "UPDATE paciente SET cpf=:cpf, dataNascimento=:dataNascimento, sexo=:sexo, telFixo=:telFixo, celular=:celular, profissao=:profissao, estadoCivil=:estadoCivil, nacionalidade=:nacionalidade, dataCadastro=:dataCadastro, emailConfirmado=:emailConfirmado, cadastroLiberado=:cadastroLiberado, WHERE idPaciente=:idPaciente"; $qUP = $instanciaCon->prepare($qUpdate); $qUP->bindParam(':cpf', str_ireplace(".", "",$paciente->getCpf())); $qUP->bindParam(':dataNascimento', $this->gravaData ($paciente->getDataNascimento())); $qUP->bindParam(':sexo', $paciente->getSexo()); $qUP->bindParam(':telFixo', $paciente->getTelFixo()); $qUP->bindParam(':celular', $paciente->getCelular()); $qUP->bindParam(':profissao', $paciente->getProfissao()); $qUP->bindParam(':estadoCivil', $paciente->getEstadoCivilPaciente()); $qUP->bindParam(':nacionalidade', $paciente->getNacionalidadePaciente()); $qUP->bindParam(':dataCadastro', $paciente->getDataCadastro()); $qUP->bindParam(':emailConfirmado', $paciente->getEmailConfirmado()); $qUP->bindParam(':cadastroLiberado', $paciente->getCadastroLiberado()); $id = $idPcte['idPaciente']; $qUP->bindParam(':idPaciente', $id); $sucesso = $qUP->execute(); Onde esta esse erro ?
  13. sergioas

    Post nao envia conteudo do Campo

    Isso mesmo, o problema era o "disabled" ... Funcionou com o "readonly" .... Valew, Marcos Xavier.
  14. sergioas

    Post nao envia conteudo do Campo

    Ola, Bom dia, Ao dar post neste codigo, o valor do Campo nomeCompletoPaciente nao é enviado: <input type="text" id="nomeCompletoPaciente" name="nomeCompletoPaciente" value="<?php if(isset($_SESSION['nome'])) { echo htmlspecialchars($_SESSION['nome']) ; } ?> " disabled> dando o erro: Notice: Undefined index: nomeCompletoPaciente Sendo que ao exibir o Formulario, o campo ja vem com o Nome tudo certinho, mas no Post este indice nao esta definido.... qual seria o problema ?
  15. sergioas

    Erro em require_once

    Show, resolveu, Obrigado.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.